我在Asp.net核心项目中有两个模型:人员和地址:
class Person
{
public int Id {get;set;}
public string Name {get;set;}
public int? HomeAddressId {get;set;}
public Address HomeAddress {get;set;}
}
class Address
{
public int Id {get;set;}
public string CityName {get;set;}
...
}
在person创建视图中,我需要使用局部视图包含地址属性的字段。
如何以元素名称与人物模型中的正确属性匹配的方式包含此部分(或写入此部分)?
例如:
<input name="HomeAddress.CityName" />
请记住,此视图应该用于除人之外的其他模型。
答案 0 :(得分:0)
@Beetlejuice可能有一种更聪明的方法,但这对你现在有帮助吗?你想要修补它并将它绑定到模型(所以你可以使用剃须刀和验证等)。也许ViewBag可以与模型结合使用来设置name属性。这种一般流程都可以实现它。
调用视图:
@{ Html.RenderAction("Partial", "Home", new { id = "HomeAddress" }); }
控制器:
Public ActionResult Partial(string id)
{
return PartialView((object)id);
}
Partial.cshtml
@model string
@{
string Id = Model + ".Id ";
string name = Model + ".CityName";
}
<input type="text" name="@Id" />
<input type="text" name="@name" />
答案 1 :(得分:0)
您可以创建一个扩展方法来生成部分视图,该视图允许您传递模型前缀,如以下帖子所示:ASP.MVC 3 Razor Add Model Prefix in the Html.PartialView extension
public static void RenderPartialWithPrefix(this HtmlHelper helper, string partialViewName, object model, string prefix)
{
helper.RenderPartial(partialViewName,
model,
new ViewDataDictionary {
TemplateInfo = new System.Web.Mvc.TemplateInfo {
HtmlFieldPrefix = prefix
}
});
}
然后从主视图中调用它:
@Html.RenderPartialWithPrefix("MyPartialViewName", Model.HomeAddress, "HomeAddress");