Asp.net mvc ASP.NET MVC 5:将EditorTemplates用作代码段
我在一个项目中使用ASP.NET MVC 5,虽然我喜欢MVC的模型绑定功能,但我发现自己使用它们并不多,因为我使用的是javascript MVVM系统,我发现使用模型绑定器很难做到这一点 但我确实发现自己经常重复使用HTML代码来处理需要跨多个位置复制的特定输入 是否有任何方法可以使用Asp.net mvc ASP.NET MVC 5:将EditorTemplates用作代码段,asp.net-mvc,Asp.net Mvc,我在一个项目中使用ASP.NET MVC 5,虽然我喜欢MVC的模型绑定功能,但我发现自己使用它们并不多,因为我使用的是javascript MVVM系统,我发现使用模型绑定器很难做到这一点 但我确实发现自己经常重复使用HTML代码来处理需要跨多个位置复制的特定输入 是否有任何方法可以使用@Html.EditorFor等,而不是指定属性,只需调用特定的模板将其用作小型内联代码段引擎 更新 嘿,伙计们,我同意使用局部视图的建议,但我做了一些修改。我想在StackOverflow上发布我的解决方案以
@Html.EditorFor
等,而不是指定属性,只需调用特定的模板将其用作小型内联代码段引擎
更新
嘿,伙计们,我同意使用局部视图的建议,但我做了一些修改。我想在StackOverflow上发布我的解决方案以获得反馈,因为我想知道这是否是一个好的做法,但目前我接受答案。您可以使用局部视图。您可以使用自己的用户界面。 执行以下步骤: 转到“视图\共享” 并创建[EditorTemplates]文件夹。 然后为每个类型或UIHint属性创建自己的*.cshtml文件 例如,为int type创建Int32.cshtml,如下所示:
@model int?
@{
int i;
if (!Model.HasValue)
{
i = 0;
}
else
{
i = Model.Value;
}
var htmlAttributes = new RouteValueDictionary();
if (ViewBag.@class != null)
{
htmlAttributes.Add("class", "form-control " + ViewBag.@class);
}
else
{
htmlAttributes.Add("class", "form-control");
}
if (ViewBag.placeholder != null)
{
htmlAttributes.Add("placeholder", ViewBag.placeholder);
}
}
<div class="form-group@(Html.ValidationErrorFor(m => m, " has-error"))">
@Html.LabelFor(m => m, new { @class = "control-label" })
<div class="controls">
@Html.TextBox(
"",
ViewData.TemplateInfo.FormattedModelValue,
htmlAttributes)
@Html.ValidationMessageFor(m => m, null, new { @class = "help-block" })
</div>
</div>
@model int?
@{
int i;
如果(!Model.HasValue)
{
i=0;
}
其他的
{
i=模型值;
}
var htmlAttributes=新的RouteValueDictionary();
if(ViewBag.@class!=null)
{
添加(“类”,“窗体控件”+ViewBag@class);
}
其他的
{
添加(“类”,“窗体控件”);
}
if(ViewBag.placeholder!=null)
{
添加(“占位符”,ViewBag.placeholder);
}
}
@LabelFor(m=>m,新的{@class=“control label”})
@Html.TextBox(
"",
ViewData.TemplateInfo.FormattedModelValue,
HTMLAT贡品)
@ValidationMessageFor(m=>m,null,new{@class=“help block”})