我有一个客户:
public partial class Client
{
public Client()
{
ResponsablesClients = new HashSet<ResponsablesClient>();
}
[Key]
[StringLength(10)]
[ScaffoldColumn(false)]
public string CodeClient { get; set; }
[StringLength(50)]
[DisplayName("Raison sociale")]
[Required]
public string Name { get; set; }
public virtual ICollection<ResponsablesClient> ResponsablesClients { get; set; }
}
和ResponsablesClient:
public partial class ResponsablesClient
{
public int Id { get; set; }
[StringLength(10)]
[ScaffoldColumn(false)]
public string CodeClient { get; set; }
[StringLength(50)]
[DisplayName("Nom complet")]
[Required]
public string Nom { get; set; }
public virtual Client Client { get; set; }
}
我的控制器创建(httpget)方法:
public ActionResult Create()
{
return View();
}
当我想创建一个新客户端时,我使用类型为client的强类型视图,并在该视图中添加动态强类型部分视图。 在创建httpPost中,我获得的客户端模型包含客户端属性,但不包含responsablesClients列表,这里是最小化视图:
<div class="form-group">
@Html.LabelFor(model => model.Name, new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.TextBoxFor(model => model.Name, new {@class="form-control"})
@Html.ValidationMessageFor(model => model.Name)
</div>
</div>
<div class="form-horizontal" style="margin-top: 50px">
<h4>Responsables</h4>
<hr/>
<div id="responsables">
<div id="responsable0">
@Html.Partial("_ResponsableCreate",new ResponsablesClient())
</div>
</div>
</div>
所以我的问题是如何在不创建自定义视图的情况下获取ResponsablesClient列表:
public Client client {get;set;}
public List<ResponsablesClient> responsablesClient {get;set;}
答案 0 :(得分:0)
如果有人有同样的问题,我发现解决方案可能不是最好的,但它做到了。 每次我做一个ajax调用渲染部分视图我传递一个id,我通过ViewData传递给视图,这是带有约定的渲染视图的总数,这里是代码:
调用渲染局部视图
@Html.Partial("_ResponsableCreate",new ResponsablesClient(),new ViewDataDictionary(){new KeyValuePair<string, object>("id",count)})
然后在局部视图中:
@{
var variable = ViewData["id"];
}
<input type="hidden" name="ResponsablesClients.Index" value="@variable"/>
@Html.TextBoxFor(model => model.Nom, new {@class = "form-control", Name = "ResponsablesClients[" + @variable + "].Nom"})
我通过ViewData检索id我使用此Id并将其放入隐藏输入中,它是非顺序列表的mvc约定,因此您不必设置连续的Id,然后每个输入的名称遵循约定:
name =“PropertyNameOfTheListInTheModel [@variable] .propery”