3

私は次のビューページを持っています、

      @using (Html.BeginForm())
              {
              <fieldset class="fs">
           @foreach (var item in Model.lstTravelReadyEntities)
               {   
     <label class="Detail1"><b>Associate Id : </b>@item.Var_AssoId </label>
     <label class="Detail1"><b>Vertical :</b>@item.Var_Vertical</label>
     <label class="Detail1"><b>Visa ValidFrom :</b>@item.Dt_VisaValidFrom </label><br /><br />

     <label class="Detail2"><b>Associate Name :</b>@item.Var_AssociateName</label>
     <label class="Detail2"><b>Account Name :</b>@item.Var_AccountName</label>
     <label class="Detail2"><b>Visa ValidDate :</b>@item.Dt_VisaValidTill</label><br /><br />

     <label class="Detail3"><b>Grade HR :</b>@item.Var_Grade</label>
     <label class="Detail3"><b>Project Name :</b>@item.Var_Project_Desc</label><br />          
               }
                    <h2> Response Details</h2><br />
      Supervisor Response :<input type="radio" class="radi" 
       name="radio" value="yes"   onclick="javascript:Getfunc(this.value);">Yes
       <input type="radio" 
           name="radio" value="no" 
        onclick="javascript:Getfunc(this.value)">No
             <div id="es"></div>
           <input type="submit" id="insert" value="Submit" 
                name="Submit" onclick="javascript:InsertDetails(item);"/>
           </fieldset>
          } 

このビュー ページのすべての値を、これらの値を新しいテーブルに挿入するためのパラメーターとしてコントローラーに渡したいのですが、これを達成するにはどうすればよいですか?

4

3 に答える 3

0

@Htmlコントロールにヘルパーを使用します。

Scott Guのこのブログ エントリをご覧ください。これは MVC2 に関するものですが、MVC4 にも適用されます。

より具体的な例については、この質問に関するをご覧ください@Html.RadioButtonFor()

onclick=また、インラインhtml 属性の代わりに jquery を使用してイベントをフックすることをお勧めします。

<script type="text/javascript">
    $("form radio").click(function(){ // or whatever selector you need
        Getfunc($(this)[0].value);
    });
</script>

最後に、モデルをパラメーターとして受け取るコントローラーの -decorated アクション@Html.BeginFormへの投稿を確認する必要があります。[HttpPost]

于 2013-07-10T13:31:48.553 に答える
0

こんにちは、このようにしてみてください。

意見

@using (Html.BeginForm("SaveAudit", "Controller", FormMethod.Post)
{  
}

コントローラ

[HttpPost]
public ActionResult SaveAudit(AuditModel model, FormCollection collection)
{
}
于 2013-07-10T11:34:30.943 に答える
0

既存のコードの問題は何ですか?

フォームに入力タイプのテキスト コントロールがないため、情報がサーバーに送信されません。TextBox のようなコントロールは、情報をコントローラー アクション メソッドに送信するためのデータを転送します。

是正処置

あなたの場合、TextBoxが必須ではないとしましょう。次に、コントローラ ポスト アクション メソッドに送信する必要があるビュー モデルHidden Fieldsプロパティを配置できます。

@using (Html.BeginForm("ActionName", "ControllerName", FormMethod.Post))
{
    <fieldset class="fs">
        @foreach (var item in Model.lstTravelReadyEntities)
        {   
            <label class="Detail1">
                <b>Associate Id : </b>@item.Var_AssoId
            </label>
            @Html.HiddenFor(i=> item.Var_AssoId) //Added Hidden Field to send this to server
            <label class="Detail1">
                <b>Vertical :</b>@item.Var_Vertical</label>
            @Html.HiddenFor(i => item.Var_Vertical)  //When post this Hidden Field will send
            <label class="Detail1">
                <b>Visa ValidFrom :</b>@item.Dt_VisaValidFrom
            </label>
            @Html.HiddenFor(i => item.Dt_VisaValidFrom)
            <br />
        }
        <h2>
            Response Details</h2>
        <br />
    </fieldset>
}

観点を説明するために、いくつかのコントロールを除外しました。これで、アクション メソッドに送信する必要があるプロパティの非表示フィールドを追加できるようになりました。

また、個々のパラメーターをアクション メソッドに渡す代わりに、ビュー モデルを使用する必要があります。

これがあなたを助けることを願っています。

于 2013-07-11T12:52:22.030 に答える