所以我遇到了一个问题,我想在视图中使用多个模型,为了完成这项工作,我使视图使用了包含所有3个模型的模型。
LogStatisticsModel.cs
arr.map do |s|
first,mid,last = s.split(/(:\d+:in\s*)/)
[first, mid.gsub(/\D+/,'').to_i, last]
end
现在开始LogModelVM仍然可以正常工作,当我在视图上使用它除了一个小细节,下拉列表的值不再跟随控制器名称“SelectedCustomer”。但它现在尝试发送“LogModelVMObject.SelectedCustomer”。因此传递的值为null ..
_LogLayout.cshtml
namespace ASD.Models
{
public class LogStatisticsModel
{
public LogModel LogModelObject { get; set; }
public StatisticsModel StatisticsModelObject { get; set; }
public LogModelVM LogModelVMObject { get; set;}
}
}
LogModelsController.cs
@model ASD.Models.LogStatisticsModel
@using (Ajax.BeginForm("LogPartialView", "LogModelsController",
new AjaxOptions
{
HttpMethod = "POST",
InsertionMode = InsertionMode.Replace,
UpdateTargetId = "divLogs",
}, new
{
id = "NewTableId"
}))
{
<p>@Html.TextBox("SearchString",null, new { @placeholder = "Message" })</p>
if (Roles.IsUserInRole(WebSecurity.CurrentUserName, "Admin"))
{
<p>
@Html.DropDownListFor(m => m.LogModelVMObject.SelectedCustomer, Model.LogModelVMObject.CustomerList, new {@id = "logdropdownlabel" })
</p>
}
<p><input type="submit" class="standardbutton logsearch" name="submit" value="Search" /></p>
}
我现在应该如何获得控制器的价值?我假设我不能在控制器的函数中写“int?LogModelVMObject.SelectedCustomer”。
答案 0 :(得分:1)
您可以像这样重写Html.DropdownList:
@Html.DropDownList("SelectedCustomer", Model.LogModelVMObject.CustomerList, new { @id = "logdropdownlabel" })
通过手动输入名称作为第一个参数,当您将数据发回控制器时,该名称应位于请求表单中。