Получение данных из представления для создания контроллера в asp.net MVC - PullRequest
0 голосов
/ 19 февраля 2011

Получение данных из представления для создания контроллера в asp.net MVC Я знаю, что это очень просто, но я только изучаю ASP.net MVC.

У меня есть контроллер Create и Create View (использовался генераторЯ могу жестко запрограммировать данные в контроллере, и они сохранятся, но я хочу знать, как вернуть данные, введенные пользователем в форму, обратно в контроллер.Мой контроллер выглядит следующим образом.

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 2, если это имеет значение.

1 Ответ

1 голос
/ 19 февраля 2011

У вас обычно есть два действия на контроллере: одно для рендеринга формы и одно для обработки отправленных значений формы. Обычно это выглядит так:

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

тогда ваше представление выглядит так, как вы показали, оно содержит форму и поля ввода, позволяющие пользователю заполнить каждое свойство модели. При отправке формы будет вызвано второе действие, и механизм связывания модели по умолчанию автоматически заполнит параметр действия значениями, введенными пользователем в форму.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...