【发布时间】:2018-08-15 03:57:18
【问题描述】:
使用下面指定的视图,我可以很好地获取我的所有属性,并且Team 属性包含正确数量的项目,但所有这些项目的属性都只是null强>...
查看
@using (Html.BeginForm("BuildTeam", "Team", FormMethod.Post, new { crmtItem = Model, team = Model.Team }))
{
@Html.HiddenFor(m => m.Id);
@Html.HiddenFor(m => m.ProjectTitle);
@Html.HiddenFor(m => m.OpportunityStatus);
@Html.HiddenFor(m => m.ProjectManager);
@Html.HiddenFor(m => m.ProjectNumber);
@Html.HiddenFor(m => m.Sector);
@Html.HiddenFor(m => m.Service);
@Html.HiddenFor(m => m.Stage);
for (int i = 0; i < Model.Team.Count(); i++)
{
@Html.HiddenFor(m => m.Team[i].DisplayName)
@Html.HiddenFor(m => m.Team[i].UserName)
}
<a class="btn btn-default btn-sm" onclick="location.href='@Url.Action("Index", new { filter= Model.Stage })'"><span class="glyphicon glyphicon-circle-arrow-left"></span></a>
<a class="btn btn-default btn-sm" href="@Model.WorkspaceUrl"><span class="glyphicon glyphicon-globe"> Workspace</span></a>
<button type="submit" class="btn btn-default btn-sm pull-right">
<span class="glyphicon glyphicon-user" /> Team
</button>
}
视图模型
public class CRMTItemViewModel
{
public int Id { get; set; }
public string ProjectTitle { get; set; }
public string ProjectManager { get; set; }
public string BidNoBid { get; set; }
public string OpportunityStatus { get; set; }
public string Stage { get; set; }
public string Sector { get; set; }
public string Service { get; set; }
public int? CRMTNumber { get; set; }
public int? ProjectNumber { get; set; }
public string WorkspaceUrl { get; set; }
public List<SharePointUser> Team { get; set; }
}
SharePointUser
public class SharePointUser
{
public string FirstName { get; internal set; }
public string LastName { get; internal set; }
public string UserName { get; internal set; }
public string DisplayName { get; internal set; }
public string ImagePath { get; internal set; }
public byte[] ImageBytes { get; internal set; }
public Guid GUID { get; internal set; }
}
控制器
[HttpPost]
public ActionResult BuildTeam(CRMTItemViewModel crmtItem, List<SharePointUser> team)
{
return View(crmtItem);
}
我最初在 Controller 中只有 crmtItem 参数,但它仍然失败,所以我尝试将其拆分但没有任何成功。
真的很感谢这方面的任何指导。
【问题讨论】:
-
首先删除
List<SharePointUser> team参数 - 您的值将绑定到Team的CRMTItemViewModel。这个观点有什么意义——它所包含的只是隐藏的输入? -
您必须从您的
BeginForm()中删除new { crmtItem = Model, team = Model.Team }- 查看您生成的<form>元素的action属性,以了解为什么它永远无法工作 -
@StephenMuecke 该视图显示项目(为简单起见不包括在内),但我有一个按钮,我想调用一个控制器操作,我将项目传递给该按钮
-
不管你怎么想——你实际上降低了性能——你执行了所有代码来生成所有额外的 html,然后通过网络发送所有额外的 html,然后再次将其全部发送回来而不改变跨度>
-
正确的性能是钥匙扣。所以你应该只关心隐藏字段中的 id。这就是我的建议
标签: c# asp.net-mvc