首页 > 解决方案 > htmlFieldPrefix 打破局部视图之外的名称

问题描述

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

@{Html.RenderPartial("~/Features/MainPage/_MyPartialView.cshtml", Model.PartialViewViewModel); }
@Html.HiddenFor(x => x.Model.SomeProperty)

我的部分观点始于

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

问题是,视图中的 HiddenProperty 名称也是使用部分视图的前缀生成的。它是“PartialViewViewModel.SomeProperty”而不是“SomeProperty”。在某些地方切换 hiddenfor 和部分视图可以解决问题(名称变为“SomeProperty”)。有没有办法为部分视图隔离 HtmlFieldPrefix?

标签: c#asp.netasp.net-mvcasp.net-corerazor

解决方案


您可以尝试添加

@{
    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)

结果: 在此处输入图像描述


推荐阅读