2

嗨,我需要在局部视图中获取 Html 前缀。

我在渲染部分视图的位置附加了这样的前缀

 Html.RenderPartial("Person", Model.Person, new ViewDataDictionary(Html.ViewDataContainer.ViewData)
{
    TemplateInfo = new TemplateInfo { HtmlFieldPrefix = "DelegatePerson"}
});

现在,当我进入 Person PartialView 时,我需要在这种情况下使用前缀。

@Html.TextBoxFor(model => model.CPR, new { @class = "numericTextbox", maxlength = 10, id = "CprField", onkeyup ="CprFieldEdited("[HTMLPrefix]_FieldName");" })

但是我不知道该怎么做。我已经搜索了很长时间。我希望有人知道如何做到这一点或类似的事情。

编辑:

这意味着我应该能够告诉 Javascript 函数 CprFieldEdited 它应该搜索的 html 前缀在这种情况下是“DelegatePerson”

编辑2: 似乎不清楚我的意思,所以我会尝试提供更多代码。

主页:

 //None relevant Code here
@Scripts.Render("~/bundles/person_search")
//None relevant Code here
        <Body>
    //None relevant Code here
               Html.RenderPartial("Person", Model.Person, new ViewDataDictionary(Html.ViewDataContainer.ViewData)
               {
                   TemplateInfo = new TemplateInfo { HtmlFieldPrefix = "DelegatePerson"}
               });
        //None relevant Code here
               Html.RenderPartial("Person", Model.Person, new ViewDataDictionary(Html.ViewDataContainer.ViewData)
               {
                   TemplateInfo = new TemplateInfo { HtmlFieldPrefix = "EmployerPerson"}
               });
        //None relevant Code here
            </body>

在这种情况下,我有两个相同类型的 Partials 呈现在同一页面上。但是在它们内部我需要告诉Javascript包现在正在使用其中的一个,因为我不能使用它们被用于其他东西的ID我的想法是什么使用带有前缀的Name属性但是正如下一个代码所示我可以'不给 javascript 前缀以区分两个部分

 @Html.TextBoxFor(model => model.CPR, new {id = "CprField", onkeyup ="CprFieldEdited("[FieldNameWithPartialPrefix]");" })

问题是我不能给 CprFieldEdited("[FieldNameWithPartialPrefix]"); javascript "[FieldNameWithPartialPrefix]" 可以是 "DelegatePerson_Fieldname" 或 "EmployerPerson"

4

2 回答 2

2

您不需要使用 . 传递前缀HtmlFieldPrefix。您可以使用它传递它ViewBag(它的工作原理类似于ViewData,但更推荐使用)。

做就是了,

 @Html.RenderPartial(
     "Person", 
     Model.Person, 
     new ViewDataDictionary()
         {
              { "Custom Prefix", "your_prefix" }
         });

或者,您可以在部分中定义前缀,

@{
    ViewBag.CustomPrefix = "your_prefix";
}

并以任何一种方式访问​​它,只需执行,

<a onkeyup="@ViewBag.CustomPrefix"> ... </a>

你可以用ViewBag它来传递任何东西dynamic。欲了解更多信息

于 2012-12-12T13:40:36.927 回答
-1
((System.Web.Mvc.ViewDataDictionary)(ViewData)).TemplateInfo.HtmlFieldPrefix
于 2016-06-09T07:29:18.200 回答