Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc ASP.NET MVC 5:将EditorTemplates用作代码段_Asp.net Mvc - Fatal编程技术网

Asp.net mvc ASP.NET MVC 5:将EditorTemplates用作代码段

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上发布我的解决方案以

我在一个项目中使用ASP.NET MVC 5,虽然我喜欢MVC的模型绑定功能,但我发现自己使用它们并不多,因为我使用的是javascript MVVM系统,我发现使用模型绑定器很难做到这一点

但我确实发现自己经常重复使用HTML代码来处理需要跨多个位置复制的特定输入

是否有任何方法可以使用
@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”})