MVC如何處理我的代碼中的提交按鈕?我有一個名爲ArticleController的控制器,它應該處理它,但我無法弄清楚如何。MVC如何在控制器中處理按鈕點擊
@{
ViewBag.Title = "Index";
}
<h2>Index</h2>
@using (Html.BeginForm())
{
@Html.AntiForgeryToken()
<div class="form-horizontal">
<h4>Article</h4>
<hr />
@Html.ValidationSummary(true, "", new { @class = "text-danger" })
<div class="form-group">
@Html.LabelFor(model => model.Text, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EditorFor(model => model.Text, new { htmlAttributes = new { @class = "form-control" } })
@Html.ValidationMessageFor(model => model.Text, "", new { @class = "text-danger" })
</div>
</div>
<div class="form-group">
<div class="col-md-offset-2 col-md-10">
<input type="submit" value="Create" class="btn btn-default"/>
</div>
</div>
</div>
}
<div>
@Html.ActionLink("Back to List", "Index")
</div>
控制器看起來是這樣的:
namespace Decision.Controllers
{
public class ArticleController : Controller
{
// GET: Article
public ActionResult Index()
{
return View();
}
[HttpGet]
public ActionResult Create()
{
var article = new ArticleController();
var home = new HomeController();
return View(home);
}
/*[HttpPost]
public ActionResult Create(Article article)
{
entities.Article.AddObject(article);
entities.SaveChanges();
return Redirect("/");
}*/
}
}
哪種方法處理提交按鈕點擊時?
你的控制器需要用'[HttpPost]'標記的'Index()'方法,它應該包含你在視圖中使用的模型的參數(它將與表單控件的值綁定注意,你的'Create()'GET方法中的代碼沒有意義 - 你不會初始化控制器的實例) –
只需使用@using(Html.BeginForm(「Create」,「Article」,FormMethod.Post) )'和'[HttpPost]'在第二個'Create'方法中,你不需要處理提交按鈕的點擊事件,表單自動調用上下文中給出的控制器動作方法 –
那麼,如果你刪除動詞過濾器並使'文章'一個可選的參數'public ActionResult Create(Article article = null)''那麼你可以使用這個方法獲得'get'和'post'請求。你可以檢查iif文章是否爲null,然後返回View,如果是不 - 繼續BL保存。但這是MVC控制器的一種不尋常的方式。 – Fabjan