gpt4 book ai didi

asp.net-mvc - 使用带有 RenderPartial 的 EditorTemplate

转载 作者:行者123 更新时间:2023-12-02 05:19:09 24 4
gpt4 key购买 nike

是否有一种可接受的方法来使用 RenderPartial 渲染 EditorTemplate?

我在 EditorTemplate 中投入了大量工作,该模板将使用 JQuery UI 自动完成功能让用户从公司列表中进行选择。 (它使用 HTML 帮助程序来确保正确的 JS 库和 CSS 规则包含在生成网页的“正确”位置。)

在为同一个应用程序构建另一个页面时,我发现我想在我为其构建 EditorTemplate 的模型之外再次使用该模板。

这段代码完成了任务,但在某种程度上我只能认为是 hack。

@using(Html.BeginForm()) {
ViewData.TemplateInfo.HtmlFieldPrefix = "CompanyName";
Html.RenderPartial("~/Views/Shared/EditorTemplates/Company.cshtml", string.Empty);
<input type="submit" value='Filter' />
}

因为我没有使用EditorFor,所以没有“name”参数,所以渲染的输入字段只是“CompanyName”的HtmlFieldPrefix。自动完成功能有效,我可以提交表单并过滤数据。但是这个解决方案感觉草率和脆弱。谁有更好的主意?

最佳答案

我已将类似可重复使用的“控件”移动到 app_code 中的助手,并将编辑器模板制作成一个小包装器,以调用助手。

我的 DateTime 编辑器模板如下所示:

@model DateTime?
@using System.Globalization
@{
var name = MvcHtmlString.Create(ViewData.TemplateInfo.GetFullHtmlFieldName(""));
var id = MvcHtmlString.Create(ViewData.TemplateInfo.GetFullHtmlFieldId(""));
var value = Model.HasValue && Model.Value > DateTime.MinValue ? string.Format("{0:d}", Model) : "";
}
<span class="edit">
@Editor.DateTime(id, name, value)
</span>

我在 app_code 中有 Editor.cshtml,其中包含:

@helper DateTime(IHtmlString id, IHtmlString name, string value) {
<input type="text" class="editor-date" id="@id" name="@name" value="@value" />
if (HttpContext.Current.Items["editor-date"] == null) {
HttpContext.Current.Items["editor-date"] = new object();

<script type="text/javascript">
$(function () {
$(".editor-date").datepicker({ dateFormat: 'd/m/yy' });
});
</script>
}
}

因此,我可以使用 EditorFor 中的日期编辑器或任何其他方式,同时包含仅启动一次的脚本,并让所有代码在一个地方更改。

关于asp.net-mvc - 使用带有 RenderPartial 的 EditorTemplate,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8596651/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com