我在我的導航partial中有一個model
,而我的註冊視圖中有一個模型時出現問題(當然是@RenderBody()
如何解決兩個模型之間的衝突,其中一個模板和ASP.NET MVC中的視圖中的其他模型
這是我得到
The model item passed into the dictionary is of type 'ProfessionalDev.Models.Registration', but this dictionary requires a model item of type 'ProfessionalDev.Models.Login'.
Line 14: <body>
Line 15:
Line 16: @Html.Partial("_Navigation") <=== THE ERROR IS HERE
Line 17: <div class="top-bg"></div>
Line 18: <div class="container body-content">
我的佈局,如果如下
@Html.Partial("_Navigation")
<div class="top-bg"></div>
<div class="container body-content">
@Html.Partial("_Header")
<main>
@RenderBody()
</main>
<footer>
<p>Copyright © [email protected] Company</p>
</footer>
</div>
的_Navigation
部分地方錯誤我因爲登錄表單的Login
模型
@model ProfessionalDev.Models.Login
<div class="navbar navbar-inverse navbar-fixed-top">
<div class="container">
<div class="navbar-header">
...
<ul class="dropdown-menu">
<li>
@Html.Partial("_Messages")
@using (Html.BeginForm("Index", "Home", FormMethod.Post)) {
@Html.ValidationMessageFor(model => model.Email)
@Html.TextBoxFor(model => model.Email, new { @class = "form-control", @placeholder = "Email" })
@Html.ValidationMessageFor(model => model.Passwd)
@Html.PasswordFor(model => model.Passwd, new { @class = "form-control", @placeholder = "Password" })
<input type="submit" value="Submit" name="action:Login" class="btn btn-primary btn-sm" />
}
</li>
<li role="separator" class="divider"></li>
<li><a href="#">Forgot Password?</a></li>
</ul>
...
然後我有一個Registration
模型註冊視圖
@model ProfessionalDev.Models.Registration
@{
ProfessionalDev.Library.IdentifierTypeItems identifierTypes = new ProfessionalDev.Library.IdentifierTypeItems();
}
<h1>New User Account</h1>
<hr />
@using (Html.BeginForm("Index", "Registration", FormMethod.Post)) {
<div class="row">
<div class="col-md-6">
<div class="form-group">
@Html.LabelFor(model => model.FirstName, "First Name", new { @class = "control-label" }) <span class="required">* </span>
@Html.ValidationMessageFor(model => model.FirstName)
@Html.TextBoxFor(model => model.FirstName, new { @class = "form-control" })
</div>
...
<input type="submit" value="Register" name="action:Register" class="btn btn-primary" />
}
這個RegistrationController
public class RegistrationController : Controller
{
// GET: Registration
public ActionResult Index()
{
return View();
}
[HttpPost]
[MultipleButton(Name = "action", Argument = "Register")]
public ActionResult Index(Registration reg) {
if (ModelState.IsValid) {
...
return RedirectToAction("Index", "Home");
}
return View("Index", reg);
}
}
當我點擊註冊按鈕, Registration
對象無效,因爲您可以看到上面應該將reg
返回到Registration/Index
觀點,而是被認爲從_Navigation
部分
的HomeController
public class HomeController : Controller
{
[HttpPost]
[MultipleButton(Name = "action", Argument = "Login")]
public ActionResult Index(Login login)
{
...
return View("Index", login);
}
返回Home/Index
視圖(我希望我做的意義...)
我該如何解決這個問題?
這是它從GUI看起來的樣子。在頂部菜單中的登錄和註冊頁面
錯誤是不言自明的。如果你沒有指定模型,那麼你沒有將'Login'的實例傳遞給部分使用'@ Html.Partial(「_ Navigation」,new Login())' - 它將使用模型形式的主視圖。 –
我遵循你的方法,而是我創建了一個變量登錄'ProfessionalDev.Models.Login登錄=新ProfessionalDev.Models.Login(); '然後將它傳遞給導航部分'@ Html.Partial(「_ Navigation」,login)'。這是工程,除了當我提交註冊表單,登錄對象也返回錯誤https://goo.gl/khA67u我理解這個概念,爲什麼發生這種情況,我只需要找出一種方法來處理這個 – esausilva