1

ユーザーが行ったアクティビティを示す記録表があります

また、ユーザーが一度に複数のアクティビティを選択できるように、各レコードに関連付けられたチェック ボックスがあります。

ユーザーがチェックボックスを選択したレコードのIDが欲しい

複数のレコードを表示できますが、コントローラーのポスト関数で値を取得できません

ここに私のコードがあります

  public ActionResult DisplayList()
    {
     //do activities to fetch record from database
 return View(modelList);//modelList is a viewmodel's Icollection list
    }

見る:-

       @using (Html.BeginForm())
 {
      @Html.ValidationSummary(false)
      <div style=" width:900px; height:400px;">
<div class="textcontent"><b>List of activities</b></div>

<div class="table" style="vertical-align:middle;">
    <div class="row">
        <div class="cell" style="width:auto;">SrNo</div>
        <div class="cell" style="width:auto;">Select Activity</div>
        <div class="cell" style="width:auto;">Learner Name</div>
    </div>
    @foreach (var item in Model.Select((x, i) => new { Data = x, Index = i + 1 }))
    {

    <div class="row1">

        <div class="cell" style="width:auto;">@item.Index</div>
        <div class="cell" style="width:auto;"> <input type="checkbox" name="chkexi" id="selected" onclick="checked()"/></div>
        <div class="cell" style="width:auto;">@Html.DisplayFor(modelItem => item.Data.persn.FirstName)</div>

    </div>    
    }
</div>
     <div class="table">
    <div class="row1">
        <div class="cell">
            <center>
               <button type="submit">Submit</button>//on click of this my controller function is called 
            </center>
        </div>
    </div>
  </div>

 <script>
    function checked() {
if (document.getElementById('selected').checked) {
    document.getElementById('chkstatus') = true;
}
 </script>

     }

私のビューモデル:::

  public class PublishViewModule
{
    public virtual myclass obj { get; set; }
           public virtual bool chkstatus { get; set; }
}
     [HttpPost]
    public ActionResult DisplayList(ExhibitionViewModel model,FormCollection form)
    {
        //here i get model as null
        return View();
    }

誰かがこれで私を助けてくれますか

4

2 に答える 2

0

Well I got answer....:)

I once again posted the question and i tried to pass those values through ajax here is the answer

how to accept value passed through ajax

:)

于 2012-08-18T06:45:40.623 に答える
0

ポストバック アクションで、置き換えます

[HttpPost]
public ActionResult DisplayList(ExhibitionViewModel model,FormCollection form)

あなたのニーズにより適したもので:

[HttpPost]
public ActionResult DisplayList(ExhibitionViewModel model)

また

[HttpPost]
public ActionResult DisplayList(FormCollection form)

または、探しているものに基づいてカスタム バインディングを行います。しかし、これら 2 つは使用する最も明白なポストバック アクションです。

その背後にある理論は次のとおりです。ASP.NET MVC – バインドする前に考える

編集

次の点に注意してください。

  1. あなたのビューには一番上にモデルがないので、それをポストバックすることさえ想定されているかどうかはわかりません。おそらくこれがnullの理由ですか?

  2. これを調べてみてください:あなたのビューモデルクラスは と呼ばれていますが、コントローラーのポストバックアクションPublishViewModuleを受け入れています。ExhibitionViewModeleそれが問題ですか?

お役に立てれば

于 2012-08-16T13:33:06.113 に答える