微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

htmlFieldPrefix 在局部视图之外中断名称

如何解决htmlFieldPrefix 在局部视图之外中断名称

我有一个视图,其中包含以下代码段:

#background-image {
    background-repeat: no-repeat;
    background-attachment: fixed;
    background-size: cover;
    background-position: center center;
    height:100vh;
}

.container {
  display: flex;
  align-items: center;
  justify-content: center;
  height:100%;
}

我的部分视图以

开头
@{Html.RenderPartial("~/Features/MainPage/_MyPartialView.cshtml",Model.PartialViewviewmodel); }
@Html.HiddenFor(x => x.Model.someProperty)

问题是,视图中 HiddenProperty 的名称也是使用部分视图的前缀生成的。它是“PartialViewviewmodel.someProperty”而不是“SomeProperty”。在地方切换 hiddenfor 和部分视图修复了问题(名称变为“SomeProperty”)。有没有办法只为局部视图隔离 HtmlFieldPrefix?

解决方法

您可以尝试添加

@{
    Html.ViewData.TemplateInfo.HtmlFieldPrefix = "";
}

进入包含部分视图的视图。

这是一个演示:

型号:

public class ParentModel
    {
        public PartialViewViewModel PartialViewViewModel { get; set; }
        public string SomeProperty { get; set; }
    }
public class PartialViewViewModel
    {
        public int Id { get; set; }
    }

_MyPartialView.cshtml:

@{
    Html.ViewData.TemplateInfo.HtmlFieldPrefix = "PartialViewViewModel";
}
@Html.TextBoxFor(m=>m.Id)

包含 _MyPartialView 的视图:

@{
    Html.ViewData.TemplateInfo.HtmlFieldPrefix = "";
}
@model ParentModel
@{Html.RenderPartial("_MyPartialView.cshtml",Model.PartialViewViewModel); }
@Html.HiddenFor(x => x.SomeProperty)

结果: enter image description here

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。