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