从视图中获取数据以在asp.net MVC中创建控制器

时间:2011-02-19 12:30:19

标签: asp.net-mvc-2 view controller

从视图中获取数据以在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。

1 个答案:

答案 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);
    }
}

然后您的视图看起来如您所示,它包含一个表单和输入字段,允许用户填充模型的每个属性。当它提交表单时,将调用第二个操作,默认模型绑定器将自动使用表单中用户输入的值填充操作参数。