如何使用ASP.NET MVC 3 Razor使用对象值呈现HtmlAttributes?

xce*_*cer 5 asp.net-mvc jquery-mobile asp.net-mvc-3

我试图使用MVC3 Razor View呈现以下HTML:

<input id="EffectiveDate" name="EffectiveDate" type="date" data-options='{"mode": "flipbox"}' />
Run Code Online (Sandbox Code Playgroud)

我无法在data-options属性中获取引号来呈现.无论我尝试什么,它们都被渲染为&quot;

以下是我在View中尝试的几种方法:

@Html.TextBoxFor(model => model.EffectiveDate, new { type = "date", data_options= " { 'mode':'flipbox' }"})
Run Code Online (Sandbox Code Playgroud)

@Html.TextBoxFor(model => model.EffectiveDate, new { type = "date", data_options= @Html.Raw("{\"mode\":\"flipbox\"}")})
Run Code Online (Sandbox Code Playgroud)

有关如何解码引号的任何建议?

Ste*_*tti 4

您可以通过创建 MVC 编辑器模板来完成此操作。首先,在“Views\Shared”文件夹中创建一个名为“EditorTemplates”的文件夹。然后将名为 DateTime.cshtml 的文件放入 EditorTemplates 文件夹中。

然后,您可以简单地对视图模型的属性使用 EditorFor() 方法,如下所示(前提是 DateTime 类型的 effectiveDate 属性):

@Html.EditorFor(m => m.EffectiveDate)
Run Code Online (Sandbox Code Playgroud)

DateTime.cshtml 编辑器模板的完整代码如下所示:

@model System.DateTime
@{
    var id = this.ViewData.TemplateInfo.GetFullHtmlFieldId("");
    var name = this.ViewData.TemplateInfo.GetFullHtmlFieldName("");
}
<input id="@id" name="@name" type="date" data-options='{"mode": "flipbox"}' />
Run Code Online (Sandbox Code Playgroud)

这将产生您正在寻找的确切输出。