2014-09-03 59 views
3

當我通過我的代碼進行調試時,我在Post EmployeeReviewEdit方法中爲'review'參數獲取一個空值。當我瀏覽HttpGET方法時,'review'的返回值看起來是正確的,並且eveything在視圖中正確填充,但當我回發到操作時,參數爲空,我似乎無法弄清楚原因。Post方法獲取一個空參數ASP .NET MVC

這裏是我的GET和POST操作:

[HttpGet] 
public ActionResult EmployeeReviewEdit(int id, string employeeName) 
{ 
    ViewBag.EmployeeName = employeeName; 
    var review = _employeeDb.EmployeeReviews.Find(id); 
    var cono = _employeeDb.EmployeeMasters.FirstOrDefault(e => e.EmployeeNumber == review.EmployeeNo).CompanyNumber; 
    var list = _selectListLib.GetManagers((int)cono,Convert.ToInt32(review.ReviewBy)); 
    ViewBag.ManagerList = list; 
    return View(review); 

}

[HttpPost] 
public ActionResult EmployeeReviewEdit(EmployeeReview review) 
{ 
    _dbDataManipulation.UpdateEmployeeReview((int)review.EmployeeNo,(DateTime) review.ReviewDate, review.ReviewBy, CurrentUserName(), review.Id); 
    return RedirectToAction("EmployeeReview", new { empNo = review.EmployeeNo}); 
} 

這是我的觀點:

@model EmployeeMaster.Models.EmployeeReview 
@{ 
    ViewBag.Title = "EmployeeReviewEdit"; 
} 

@section scripts 
{ 
    <script type="text/javascript"> 
     $(function() { 
      $('#ReviewDate').datepicker(); 
     }); 
    </script> 
} 

<div id="results-container" style="background-color: #c9c9c9; padding: 10px; margin-top: 40px;"> 
    <h2>@ViewBag.EmployeeName - Edit Review</h2> 
    <div style="background-color: #9e2b3c; padding: 1px; margin-bottom: 10px"></div> 

    @using (Html.BeginForm("EmployeeReviewEdit","Employee", FormMethod.Post, new{@id = "review-edit-form"})) 
    { 
     @Html.Label("Review Date: ", new { id = "reviewdate-label" }) 
     @Html.TextBoxFor(model => model.ReviewDate,"{0:d}", new { @class = "form-control" }) 
     @Html.Label("Review By: ", new { id = "reviewby-label" }) 
     @Html.DropDownListFor(model => model.ReviewBy, (List <SelectListItem>)ViewBag.ManagerList, new { @class = "form-control" }) 
     @Html.HiddenFor(model => model.EmployeeNo) 
     @Html.HiddenFor(model => model.CreatedBy) 
     @Html.HiddenFor(model => model.CreatedOn) 
     @Html.HiddenFor(model => model.ModifiedBy) 
     @Html.HiddenFor(model => model.ModifiedOn) 
     @Html.HiddenFor(model => model.Id) 

     <input type="submit" name="review" class="col-sm-1 btn btn-default" id="edit-button"value="Save" /> 

    } 
</div> 

我的問題,我的輸入控制有一個名字「審查」這是造成混淆我的參數,這也被稱爲「審查」我改變了我的名字NPUT [提交]。

+0

我看不出有什麼明顯的錯誤。您是否使用過Fiddler或瀏覽器內工具查看POST上的請求正文並確認它看起來正確?有沒有爲您的應用程序配置任何自定義模型綁定器? – 2014-09-03 19:58:22

+0

我其實只是想出了這個問題,併發布在我的文章的底部 – user3788671 2014-09-03 20:00:11

+0

我現在就刪除這篇文章嗎?或者我只是離開它? – user3788671 2014-09-03 20:00:36

回答

3

問題是我的HTTPPOST操作有一個名爲「review」的參數,我的視圖上的提交輸入按鈕的名稱爲「review」。這導致了一個衝突,我可以通過刪除輸入中的名稱部分或將名稱更改爲與參數名稱不匹配的內容來解決。或者你可以改變參數的名稱,這將工作得很好。

視覺行的示例來解決:

<input type="submit" name="review" class="col-sm-1 btn btn-default" id="edit-button"value="Save" /> 

更改爲:

<input type="submit" class="col-sm-1 btn btn-default" id="edit-button"value="Save" />