對於MVC4,通過POST
發送ViewModel
用於將視圖填充回控制器的最佳實踐方式是什麼?通過POST將ViewModel發送回控制器
2
A
回答
2
讓我們假設你想要一個登錄表單,這個視圖模型:
public class LoginModel
{
[Required]
public string UserName { get; set; }
[Required]
[DataType(DataType.Password)]
public string Password { get; set; }
public bool RememberMe { get; set; }
}
使用在視圖中這個視圖模型是直接的,只要發送LoginModel
的新實例:
public ActionResult Login()
{
var model = new LoginModel();
return View(model);
}
現在,我們可以創建Login.cshtml
觀點:
@model App.Models.LoginModel
@using (Html.BeginForm())
{
@Html.LabelFor(model => model.UserName)
@Html.TextBoxFor(model => model.UserName)
@Html.ValidationMessageFor(model => model.UserName)
@Html.LabelFor(model => model.Password)
@Html.PasswordFor(model => model.Password)
@Html.ValidationMessageFor(model => model.Password)
@Html.CheckboxFor(model => model.RemberMe)
@Html.LabelFor(model => model.RememberMe)
<input type="submit" value="Login" />
}
現在我們要創造一種處理這種形式的後控制器的動作。我們是這樣做的:
[HttpPost]
public ActionResult Login(LoginModel model)
{
if (ModelState.IsValid)
{
// Authenticate the user with information in LoginModel.
}
// Something went wrong, redisplay view with the model.
return View(model);
}
的HttpPost
屬性將確保控制器動作只能通過POST請求到達。
MVC將使用它的魔力並將視圖中的所有屬性綁定到填充了帖子值的LoginModel
實例。
+0
我希望你比RemberMe有更多的錯誤,所以編輯會飛翔〜 – panhandel
1
一種方法是讓您的Post controller
接受ViewModel
作爲其參數,然後將其屬性映射到您的域模型。
public class Model
{
public DateTime Birthday {get;set;}
}
public class ViewModel
{
public string Month {get;set;}
public string Day {get;set;}
public string Year {get;set;}
}
控制器
[HttpPost]
public ActionResult Create(ViewModel viewModel)
{
string birthday = viewModel.Month + "/" + viewModel.day + "/" + viewModel.year;
Model model = new Model { Birthday = Convert.ToDateTime(birthday) } ;
// save
return RedirectToAction("Index");
}
+0
嗯,我問從_View_怎麼能輕鬆地回發一個模型? –
相關問題
- 1. 通過AJAX將POST數組發送到Spring的控制器
- 2. 如何通過彈簧將對象發送回控制器
- 3. MVC3通過Iquableable將viewmodel對象傳遞迴控制器
- 4. 如何讓View通過ViewModel將ID返回給控制器?
- 5. 通過Ajax發送數據到控制器Post
- 6. iOS:通過控制器發送消息
- 7. 春發送通過控制器
- 8. 通過發送POST
- 9. MVC 4 ViewModel沒有被髮送回控制器
- 10. 將表單發送給控制器後,ViewModel內容爲空
- 11. 如何將數據從控制器發送到viewmodel文本框
- 12. 發送彈簧控制器POST請求
- 13. 如何通過發送POST請求來控制firefox打開URL?
- 14. 通過ajax調用將對象發送給控制器
- 15. 通過網址發送$ POST
- 16. 通過HTTP發送XML post
- 17. jQuery通過POST發送值
- 18. 通過發送POST參數
- 19. 通過Ajax POST發送HTML
- 20. AngularJS:如何通過$ http post發送JS對象到c#控制器?
- 21. 發送通過AJAX POST請求JSON對象到Rails的控制器
- 22. 通過POST發送的PHP未通過PHP發送
- 23. 控制器操作可以通過jQuery post返回void嗎?
- 24. 通過AsyncHttpClient將JSON作爲POST請求發送到服務器
- 25. iOS通過HTTP POST將圖片發送到服務器
- 26. 發送新訂單回MVC控制器
- 27. 發送選擇回控制器
- 28. MVC4使用Ajax.BeginForm不發送ViewModel到控制器?
- 29. Honeybadger.notify()不從控制器發送通知
- 30. 無法通過bluemix控制檯發送推送通知
根據我的理解,您應該'Html.BeginForm' – Satpal
http://stackoverflow.com/questions/5849398/mvc-3-form-post-and-persisting-model-data –
http:// www。 asp.net/mvc/tutorials/hands-on-labs/aspnet-mvc-4-helpers,-forms-and-validation#Exercise3 – CodeCaster