Я пытаюсь отформатировать поле в своей форме редактирования. Я хотел бы, чтобы это было в денежном формате без десятичных знаков.
<div class = "col-md-3">
@Html.LabelFor(model => model.Value, htmlAttributes: new { @class = "control-label col-md-3 noleftpadding" })
<div class = " input-group col-md-6 nopadding">
<div class = "col-md-12 nopadding">
@Html.EditorFor(model => model.Value, new { htmlAttributes = new { @class = "form-control" } })
</div>
</div>
</div>
Как мне это сделать?
Я также попытался изменить модель, однако, когда я использую этот метод, каждый раз, когда я пытаюсь редактировать другое поле, приложение сбрасывает любое существующее значение на null, даже если я не делал это изменение намеренно.
[DisplayFormat(DataFormatString = "{0:C0}", ApplyFormatInEditMode = true)]
public Nullable<decimal> Value { get; set; }
Я обнаружил, что если я установлю для ApplyFormatInEditMode значение false, мое значение не будет сброшено, однако при отображении на странице редактирования оно вернется к десятичному значению, когда я хочу, чтобы оно выглядело как значение валюты без десятичных знаков.
Шаблон редактора
<!DOCTYPE html>
<html>
<head>
<meta charset = "utf-8" />
<meta name = "viewport" content = "width=device-width, initial-scale=1.0">
<title>@ViewBag.Title - My ASP.NET Application</title>
@Styles.Render("~/Content/css")
@Scripts.Render("~/bundles/modernizr")
<script type = 'text/javascript' >
var appInsights=window.appInsights||function(config)
{
function r(config){ t[config] = function(){ var i = arguments; t.queue.push(function(){ t[config].apply(t, i)})} }
var t = { config:config},u=document,e=window,o='script',s=u.createElement(o),i,f;for(s.src=config.url||'//az416426.vo.msecnd.net/scripts/a/ai.0.js',u.getElementsByTagName(o)[0].parentNode.appendChild(s),t.cookie=u.cookie,t.queue=[],i=['Event','Exception','Metric','PageView','Trace','Ajax'];i.length;)r('track'+i.pop());return r('setAuthenticatedUserContext'),r('clearAuthenticatedUserContext'),config.disableExceptionTracking||(i='onerror',r('_'+i),f=e[i],e[i]=function(config, r, u, e, o) { var s = f && f(config, r, u, e, o); return s !== !0 && t['_' + i](config, r, u, e, o),s}),t
}({
instrumentationKey:'7b294d9c-2c13-4d61-bd3f-65ffb8e1561a'
});
window.appInsights=appInsights;
appInsights.trackPageView();
</script>
</head>
<body>
<div class = "navbar navbar-inverse navbar-fixed-top">
<div class = "container">
<div class = "navbar-header">
<button type = "button" class = "navbar-toggle" data-toggle = "collapse" data-target = ".navbar-collapse">
<span class = "icon-bar"></span>
<span class = "icon-bar"></span>
<span class = "icon-bar"></span>
</button>
@Html.ActionLink("SJAssoc", "LoggedIn", "Account", new { area = "" }, new { @class = "navbar-brand" })
</div>
<div class = "navbar-collapse collapse">
<ul class = "nav navbar-nav">
<li>@Html.ActionLink("To Do List", "Index", "Todoes")</li>
<li>@Html.ActionLink("Strategy", "Index", "Strategy")</li>
<li>@Html.ActionLink("Opptys", "Index", "Opptys")</li>
<li>@Html.ActionLink("EMeetings", "Index", "EMeetings")</li>
<li>@Html.ActionLink("Register", "Register", "Account")</li>
<li>@Html.ActionLink("Logout", "Logout", "Account")</li>
@*<li>@Html.ActionLink(""</li>*@
</ul>
</div>
</div>
</div>
<div class = "container body-content">
@RenderBody()
<hr />
<footer>
<p>© @DateTime.Now.Year - My ASP.NET Application</p>
</footer>
</div>
@Scripts.Render("~/bundles/jquery")
@Scripts.Render("~/bundles/bootstrap")
@RenderSection("scripts", required: false)
</body>
</html>
Не совсем уверен, как на это ответить, но я отредактировал свой код выше, чтобы показать общий формат моей формы редактирования.
У вас должен быть частичный файл .cshtml, относящийся к используемому вами Html.EditorFor. Я просто хочу увидеть эту разметку. Обычно они находятся в "Views / Shared / EditorTemplates /".
Я понял. Я только что добавил код общего шаблона.
Это похоже на файл "_Layout.cshtml", а не на шаблон редактора. У вас есть файлы в "Views / Shared / EditorTemplates"?
У меня нет папки / файла EditorTemplates ...
Значение (скажем) $10 не может быть привязано к десятичной системе (из-за символа валюты). Вам нужно будет создать собственный ModelBinder, если вы хотите это сделать. (Возможно, вас заинтересует mvc-numericinput как альтернатива)





Как выглядит шаблон редактора?