如何在部分视图i Razor中获取HTMLPREFIX

时间:2012-12-12 13:21:56

标签: c# javascript jquery razor asp.net-mvc-4

您好我需要在局部视图中获取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>

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

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

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

2 个答案:

答案 0 :(得分: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。更多info

答案 1 :(得分:-1)

((System.Web.Mvc.ViewDataDictionary)(ViewData)).TemplateInfo.HtmlFieldPrefix