从视图中获取数据以在asp.net MVC中创建控制器 我知道这很简单,但我只是在学习ASP.net MVC。
我有一个Create控制器和一个创建视图(使用了生成器) 我可以将数据硬编码到控制器中并保存,但我想知道如何将用户放在表单上的数据反馈到控制器中。 我的控制器是这样的。
public ActionResult Create(Seller newSeller)
{
if (ModelState.IsValid)
{
try
{
newSeller.SellerID = 34324442;
newSeller.State = "NA";
newSeller.UserType = "Seller";
newSeller.FirstName = "sdfasd";
newSeller.LastName = "dasdfadsf";
newSeller.Phone = "33333";
newSeller.Email = "dfasdfasdf";
// write to database
listingsDB.Sellers.AddObject(newSeller);
listingsDB.SaveChanges();
return RedirectToAction("Details", newSeller.SellerID);
}
catch(Exception ex)
{
}
}
return View(newSeller);
}
我的观点看起来像这样
<% using (Html.BeginForm()) {%>
<%: Html.ValidationSummary(true) %>
<fieldset>
<legend>Fields</legend>
<div class="editor-label">
<%: Html.LabelFor(model => model.SellerID) %>
</div>
<div class="editor-field">
<%: Html.TextBoxFor(model => model.SellerID) %>
<%: Html.ValidationMessageFor(model => model.SellerID) %>
</div>
......很多礼物然后
<p>
<input type="submit" value="Create" />
</p>
</fieldset>
<% } %>
<div>
<%: Html.ActionLink("Back to List", "Index") %>
</div>
如果重要的话,我正在使用ASP.net MVC。
答案 0 :(得分:1)
您通常在控制器上有两个操作:一个用于渲染表单,另一个用于处理已发布的表单值。通常它看起来像这样:
public class SellerController: Controller
{
// used to render the form allowing to create a new seller
public ActionResult Create()
{
var seller = new Seller();
return View(seller);
}
// used to handle the submission of the form
// the seller object passed as argument will be
// automatically populated by the default model binder
// from the POSTed form request parameters
[HttpPost]
public ActionResult Create(Seller seller)
{
if (ModelState.IsValid)
{
listingsDB.Sellers.AddObject(seller);
listingsDB.SaveChanges();
return RedirectToAction("Details", new { id = seller.SellerID });
}
return View(seller);
}
}
然后您的视图看起来如您所示,它包含一个表单和输入字段,允许用户填充模型的每个属性。当它提交表单时,将调用第二个操作,默认模型绑定器将自动使用表单中用户输入的值填充操作参数。