0
有人能告訴我如何在使用部分視圖時讓MVC綁定到視圖模型中的視圖模型?爲什麼MVC在使用部分視圖時不綁定?
public class HomeController : Controller
{
//
// GET: /Home/
[HttpGet]
public ActionResult Index()
{
AVm a = new AVm();
BVm b = new BVm();
a.BVm = b;
return View(a);
}
[HttpPost]
public ActionResult Index(AVm vm)
{
string name = vm.BVm.Name; // will crash BVm == null
return View(vm);
}
}
//索引視圖
@model MvcApplication4.Models.AVm
@{
ViewBag.Title = "Index";
}
<h2>Index</h2>
@using (Html.BeginForm("Index","Home",FormMethod.Post))
{
<text>Id:</text> @Html.TextBoxFor(x => x.Id)
@Html.Partial("SharedView", Model.BVm)
<input type="submit" value="submit" />
}
// SharedView
@model MvcApplication4.Models.BVm
<text>Name:</text> @Html.TextBoxFor(x => x.Name)
Object reference not set to an instance of an object.
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.
Exception Details: System.NullReferenceException: Object reference not set to an instance of an object.
Source Error:
Line 26: public ActionResult Index(AVm vm)
Line 27: {
Line 28: string name = vm.BVm.Name; // will crash BVm == null
Line 29:
Line 30:
您可以先修復您的語法,因爲您的Action方法沒有方法名稱。另外看來,這個非命名方法是一個get請求,所以它將全部爲空。您需要顯示所有相關的Action方法和您的部分視圖代碼。 – MVCKarl
如何返回類型方法名稱後?當你使用Test1模型時,爲了得到'Name'不應該使用vm.Test2.Name? –
確定已更新。現在應該都有意義。 – chobo2