我創建了一個View for表單提交,我希望表單數據在點擊Submit按鈕後傳遞給Controller。MVC 5 - 在窗體(視圖)上輸入的值沒有傳遞給控制器
爲了簡單起見,我按比例縮小了模型和視圖。
當我斷開HomeController並執行步驟: ReviewViewModel reviewViewModelx = reviewViewModel; 從我期望的形式填寫沒有值。
查看:
@model ReviewViewModel
<div class="panel-body">
@using (Html.BeginForm("SubmitReview", "Home", FormMethod.Post, new { model = Model }))
{
@*@Html.AntiForgeryToken()*@
@Html.ValidationSummary("", new { @class = "text-danger" })
<div class="form-horizontal">
<div class="form-group">
@Html.LabelForRequired(model => model.ReviewModel.Name, htmlAttributes: new { @class = "control-label col-md-5" })
<div class="col-md-5">
@Html.EditorFor(model => model.ReviewModel.Name, new { htmlAttributes = new { @class = "form-control" } })
@Html.ValidationMessageFor(model => model.ReviewModel.Name, "", new { @class = "text-danger" })
</div>
</div>
<div class="form-group">
@Html.LabelForRequired(model => model.ReviewModel.Degree, htmlAttributes: new { @class = "control-label col-md-5" })
<div class="col-md-5">
@Html.EditorFor(model => model.ReviewModel.Degree, new { htmlAttributes = new { @class = "form-control" } })
@Html.ValidationMessageFor(model => model.ReviewModel.Degree, "", new { @class = "text-danger" })
</div>
</div>
<div class="form-group">
<div class="col-md-offset-2 col-md-5">
<input type="submit" value="Submit Review" class="btn btn-default" />
</div>
</div>
</div>
</div>
}
ReviewViewModel此視圖模型包含3個不同的數據模型,我只顯示下方,因爲這是正在被填充什麼複習課。
public class ReviewViewModel
{
public VideoTypeModel VideoTypeModel;
public VideoModel VideoModel;
public ReviewModel ReviewModel;
public ReviewViewModel()
{
VideoTypeModel = new VideoTypeModel();
VideoModel = new VideoModel();
ReviewModel = new ReviewModel();
}
public ReviewViewModel(VideoTypeModel videoTypeModel, VideoModel videoModel, ReviewModel reviewModel)
{
this.VideoTypeModel = videoTypeModel;
this.VideoModel = videoModel;
if (reviewModel != null)
{
this.ReviewModel = reviewModel;
}
}
}
評分數據模型:
ReviewModel
public class ReviewModel
{
[Required]
[Display(Name="Name: ")]
public string Name { get; set; }
[Required]
[Display(Name="Degree:")]
public string Degree { get; set; }
}
的HomeController
如前所述,第一步驟之後,有在reviewViewModelx.ReviewModel.Name沒有值或 reviewViewModelx.ReviewModel.Email(或模型中的任何其他字段爲I爲簡潔起見,在本樣本中刪除。
[HttpPost]
public ActionResult SubmitReview(ReviewViewModel reviewViewModel)
{
ReviewViewModel reviewViewModelx = reviewViewModel;
SendReviewEmail ce = new SendReviewEmail(null);
SendReviewEmailToTech ste = new SendReviewEmailToTech(null);
return View(reviewViewModel);
}
我有點新手到MVC的,任何援助表示讚賞。提前致謝!
您不需要在BeginForm聲明中傳遞模型。事實上,我認爲FormMethod.Post之後的參數應該是HtmlAttributes,而不是RouteValues。檢查api確定。你的模型中有IEnumerable類型嗎? – JanneP