【发布时间】:2014-12-14 18:54:07
【问题描述】:
我是 MVC 新手,所以请放轻松。我收到了一个在 MVC 中启动的项目,并被告知要添加到其中。我很好,直到我到达需要来自两个不同模型的数据的部分。现在我被困住了,我的老板希望昨天完成这项工作。如果可以的话,请帮忙。
我有一个包含两个部分视图和一个提交按钮的视图。每个局部视图都使用不同的模型。视图在屏幕上显示用户可以更改的信息。然后单击提交按钮。在控制器中,我想访问两个模型的数据(用户在屏幕上输入的值)。现在,我什至无法获得调用控制器的提交按钮。这是我需要立即帮助的部分,但我最终需要知道如何从控制器访问两个模型的数据。
这是我想做的基本想法:
这是我的观点:CreateContract.cshtml
<div class="container-fluid">
@using (Html.BeginForm("CreateContract", "CreateContract", FormMethod.Post, new { @class = "form-horizontal " }))
{
<div id="PartialDiv">
@{
Html.RenderPartial("ApplicationPartialView", new CarmelFinancialWeb.Models.ModelApplication());
Html.RenderPartial("ContractPartialView");
}
</div>
<input id="btnCreateContract" type="submit" class="btn btn-primary" value="Save" name="CreateContract" />
}
</div>
这是控制器 CreateContractController.cs 的一部分。当视图打开并正常工作时会触发此方法。
[AuthorizeAdmin]
public ActionResult CreateContract(string ID)
{
ModelContract obj_Contract = new ModelContract();
obj_Contract.BuyerName = "MOCS";
return View(@"~/Views/CreateContract/CreateContract.cshtml", obj_Contract);
}
这是控制器 CreateContractController.cs 的一部分。单击提交按钮时,未命中此方法。我尝试包含来自其他方法的字符串 ID 变量以及 ModelContract 和 ModelApplication(以及它们的各种组合),但我无法调用此方法。
[AuthorizeAdmin]
[HttpPost]
public ActionResult CreateContract()
{
ModelApplication obj_App = new ModelApplication();
return View(@"~/Views/CreateContract/CreateContract.cshtml", obj_App);
}
这些是部分视图的控制器中的方法。这些也不会被调用。
public PartialViewResult ApplicationPartialView(string ID)
{
ModelApplication obj_App = new ModelApplication();
if (ID != null && ID != "0" && ID != null && ID != "")
{
obj_App = objBllApplication.GetApplicationByID(int.Parse(ID));
}
return PartialView("CreateContractApplicationPartialView");
}
public PartialViewResult ContractContractPartialView()
{
ModelContract obj_Contract = new ModelContract();
obj_Contract.DealerID = "MOCS";
return PartialView("CreateContractContractPartialView");
}
【问题讨论】:
-
CreateContract 的 Post 版本以前工作过吗?我猜答案是否定的。它可能需要获取 ModelContract 的实例,以便从表单中获取详细信息。
-
我要更改的第一件事是您的提交控件。我会把它作为一个按钮而不是一个输入。试试看它是否开始调用你的控制器动作。
-
Pheonyx:当我将其更改为按钮时,我收到此错误:“传入字典的模型项的类型为'CarmelFinancialWeb.Models.ModelContract',但此字典需要一个模型项输入“CarmelFinancialWeb.Models.ModelApplication”。”
-
Daniel Hollinrake:在我没有部分观点之前,帖子版本确实有效。我尝试将 ModelContract 添加为变量,但没有成功:[HttpPost]public ActionResult CreateContract(ModelContract con){}
-
那些局部视图中有什么?当您将它们取出时,帖子是否有效?
标签: c# asp.net-mvc asp.net-mvc-4