2013-03-25 129 views
2

每當我嘗試使用模型將視圖中的值傳遞給控制器​​時,它將在控制器中顯示爲null。我在項目的另一部分嘗試了一些非常類似的東西,但沒有遇到這個問題。爲什麼這會回到空?MVC 3將View從視圖傳遞給控制器​​

這裏是從控制器代碼:

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() { } 
    } 
} 
+0

也許你是從控制器意味着查看? – 2013-03-25 04:13:39

+0

你還沒有提供足夠的信息。可能還沒有調查過。例如'MovieReview review = MovieADO.getReviewByID(id);'這個語句是否返回行?行動方法是否獲得了一個ID傳遞?或者它使用默認的-1(我看到問題) – 2013-03-25 04:14:31

+0

不,它從控制器中的[HttpGet] Edit方法傳遞給Edit.cshtml,沒有任何問題,但[HttpPost] Edit方法中的review參數返回當我點擊提交時爲null。 – user2206127 2013-03-25 04:17:13

回答

5

而不是

[HttpPost] 
public ActionResult Edit(MovieReview review) 

[HttpPost] 
public ActionResult Edit(MovieReview model) 

(在該方法從審查模型進一步將其重命名。它應該工作。

OR MovieReview.Review的別的東西

重命名屬性(例如,Review1)。你不能有一個屬性相同的名稱,並通過模型對象(不區分大小寫)

+0

吶喊,那裏是 – 2013-03-25 05:55:12

+0

請顯示這些索賠的來源。 – CodeCaster 2013-03-25 14:01:49

+0

非常感謝!有效。 – user2206127 2013-03-25 15:00:16

0

你一定要試試這個

@using (Html.BeginForm("Action methodName","controllerName")) 
+0

當我輸入@using(Html.BeginForm(「Edit」,「Reviews」))時,它仍然返回null。 Idk如果我做對了。 – user2206127 2013-03-25 05:06:38

相關問題