【发布时间】:2012-11-30 05:12:20
【问题描述】:
您好,我需要在局部视图中获取 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"
【问题讨论】:
-
是的,Javascript 将需要前缀来区分主页上的部分和主页上另一个部分中的部分。如果这有任何意义
-
您不需要为此传递
HtmlFieldPrefix。就做ViewBag.CustomPrefix = "your_prefix"; -
啊,现在我找到了解决方案,你在@rae1n 我已经在主页中设置了 Viewbag 并在部分页面中使用它。它是如此简单,我只是没有意识到。非常感谢。我会将您的答案标记为最佳答案。
标签: c# javascript jquery razor asp.net-mvc-4