[英]MVC 3 Passing null from View to Controller
每當我嘗試使用模型將值從視圖傳遞到控制器時,它在控制器中都顯示為null。 我在項目的另一部分嘗試了類似的操作,但沒有出現此問題。 為什么返回零?
這是來自控制器的代碼:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using MovieProject2.Models;
namespace MovieProject2.Controllers
{
public class ReviewsController : Controller
{
public ActionResult Edit(int id = -1)
{
if (id < 0)
return HttpNotFound();
MovieReview review = MovieADO.getReviewByID(id);
return View(review);
}
[HttpPost]
public ActionResult Edit(MovieReview review)
{
if (review == null) return HttpNotFound();
return View(review);
}
}
視圖:
@model MovieProject2.Models.MovieReview
@{
ViewBag.Title = "Edit Review";
}
@{ //Not null here
if(@Model != null) {<h2>Edit Review for @Model.MovieReviewed.Title</h2>
<h4>Reviewed by @Model.Reviewer.Username</h4>}
else{<h2>Not Found</h2>
}
}
@using (Html.BeginForm())
{
Html.ValidationSummary(true);
<fieldset>
<div class="editor-label">
@Html.LabelFor(itemModel => Model.Rating)
</div>
<div class="editor-label">
@Html.EditorFor(itemModel => Model.Rating)
@Html.ValidationMessageFor(itemModel => Model.Rating)
</div>
<div class="editor-label">
@Html.LabelFor(itemModel => Model.Review)
</div>
<div class="editor-label">
@Html.EditorFor(itemModel => Model.Review)
@Html.ValidationMessageFor(itemModel => Model.Review)
</div>
<p>
<input type="submit" value="Change" />
</p>
</fieldset>
}
模型:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
namespace MovieProject2.Models
{
public class MovieReview
{
public int ReviewID { get; set; }
public Movie MovieReviewed { get; set; }
public User Reviewer { get; set; }
public int Rating { get; set; }
public string Review { get; set; }
public DateTime DateReviewed { get; set; }
public MovieReview() { }
}
}
代替
[HttpPost]
public ActionResult Edit(MovieReview review)
寫
[HttpPost]
public ActionResult Edit(MovieReview model)
(並使用該方法將其重命名,從復審到模型 。它應該可以正常工作。
要么
重命名MovieReview.Review的屬性(例如,Review1)。 屬性和傳遞的模型對象不能具有相同的名稱(不區分大小寫)
你必須試試這個
@using (Html.BeginForm("Action methodName","controllerName"))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.