2015-07-18 2 views
0

Как можно передавать данные с помощью Razor в веб-приложение F # MVC5.Прохождение данных от Razor Form Post к контроллеру F #

Например, в представлении ниже, когда PostEmail форма размещения как можно передать по значению NEWEMAIL ввода, а также некоторые поля из ViewData?

И для DeleteEmail формы, как я могу получить выбранное значение параметра из писем выбрать?

Мой Вид: (Settings.cshtml)

<div style="width: 100%;"> 
    <h2 id="title" style="margin: 0 auto;">@ViewBag.PageTitle</h2> <br> <br> 
    <div style="width: 60%; margin: 0 auto;"> 
     <div style="float: left; clear: none; width: 45%;"> 
      <span>EMAILS</span> <br> 

      @using (Html.BeginForm("DeleteEmail", "QualityScore", FormMethod.Post)) 
      { 
       <select id="emails" size="10" style="width: 100%; max-width: 100%"> 
        @foreach (string email in ViewBag.EmailList) 
        { 
         <option value="@email">@email</option> 
        } 
       </select> 
       <input type="submit" id=" email_delete" value="Delete" /> 
      } 

      @using (Html.BeginForm("PostEmail", "QualityScore", FormMethod.Post)) 
      { 
       <input id="newEmail" /> 
       <input type="submit" id="email_create" value="Create" /> 
      } 

     </div> 
    </div> 
</div> 

Мой контроллер: (QualityScoreController.fs)

type QualityScoreController(queries : DataQueries) = 
    inherit Controller() 
    new() = new QualityScoreController(DataQueries()) 

    member this.Settings(token) = 
     let db = DataConnection.GetDataContext() 

     let user = queries.FindUserByToken(token, db) 

     this.ViewData.Add("PageTitle", "Your QualityScore Report Settings") 
     this.ViewData.Add("EmailList", queries.FindUsersReportEmails(user.Id, db)) 
     this.ViewData.Add("KeywordList", queries.FindUsersReportBrands(user.Id, db)) 
     this.ViewData.Add("UserID", user.Id) 

     this.View() 

    member this.PostEmail() = 
     ... //need to use information sent from the form 

    member this.DeleteEmail() = 
     ... //need to use information sent from the form 

МОЕ РЕШЕНИЕ

Мой вид: (Settings.cshtml)

<div style="width: 100%;"> 
    <h2 id="title" style="margin: 0 auto;">@ViewBag.PageTitle</h2> <br> <br> 
    <div style="width: 60%; margin: 0 auto;"> 
     <div style="float: left; clear: none; width: 45%;"> 
      <span>EMAILS</span> <br> 

      @using (Html.BeginForm("DeleteEmail", "QualityScore", FormMethod.Post)) 
      { 
       <select name="emails" size="10" style="width: 100%; max-width: 100%"> 
        @foreach (string email in ViewBag.EmailList) 
        { 
         <option value="@email">@email</option> 
        } 
       </select> 
       <input type="submit" id=" email_delete" value="Delete" /> 
       <input name="userid" none value="@ViewBag.UserID" /> 
      } 

      @using (Html.BeginForm("PostEmail", "QualityScore", FormMethod.Post)) 
      { 
       <input name="newEmail" /> 
       <input type="submit" id="email_create" value="Create" /> 
       <input name="userid" none value="@ViewBag.UserID" /> 
      } 

     </div> 
    </div> 
</div> 

Мой контроллер: (QualityScoreController.fs)

type QualityScoreController(queries : DataQueries) = 
    inherit Controller() 
    new() = new QualityScoreController(DataQueries()) 

    member this.Settings(token) = 
     let db = DataConnection.GetDataContext() 

     let user = queries.FindUserByToken(token, db) 

     this.ViewData.Add("PageTitle", "Your QualityScore Report Settings") 
     this.ViewData.Add("EmailList", queries.FindUsersReportEmails(user.Id, db)) 
     this.ViewData.Add("KeywordList", queries.FindUsersReportBrands(user.Id, db)) 
     this.ViewData.Add("UserID", user.Id) 

     this.View() 

    member this.PostEmail(newEmail: string, userid : int) = 
     ... 

    member this.DeleteEmail(emails : string, userid : int) = 
     ... 

ответ

1

ASP.NET MVC будет автоматически связывать значения формы с тезкой параметры ваших действий:

member this.PostEmail(newEmail: string) = ... кажутся

+0

Не будет работать для меня , http://i.imgur.com/oAbNIxL.png – Swidtter

+0

Это было бы потому, что вы указали 'id' для своих элементов формы вместо' name'. –

+0

Удивительная благодарность, которая очистила его. Теперь, что можно сделать с элементами ViewBag? – Swidtter

Смежные вопросы