2011-12-23 7 views
0

MVCにはまだまだ新しいものがありますので、私にご負担ください。私はいくつかの動的に生成されたHTMLを取得しようとしています。この場合、私のnotifyList内の項目をリストします。私はコントローラー内のそれぞれをループし、データベースエントリーとして追加する予定です。どんな助けでも感謝しています。ビューからコントロールするHTMLアイテムを取得する

ビュー

@model _BaseViewModel 

// The form it's within... 
@using (Html.BeginForm("Create", "Leaf", FormMethod.Post, new { id = "createForm" })) 

<div class="editor-label bottom-area bottom-header"> 
    Notification List: 
</div> 
<div class="editor-field bottom-area"> 
    <ul id="notifyList"></ul> 
</div> 

コントローラー:

[HttpPost] 
public ActionResult Create(_BaseViewModel model) 
{ 
    // Some loop here 
     // get html here 
    db.UserItems.AddObject(model.user); 
    db.SaveChanges(); 
    // 

    return RedirectToAction("Index"); 
} 
+0

アイテムはどのように生成されますか? ulには何が入っていますか?コントローラーで何を取りたいのですか? _BaseViewModelの外観はどうですか? –

+0

ulには何も含まれていません。私はulにliを追加するためにJQueryを使用しています。私は李を取っておきたい。私のモデル、または少なくとも関係するもの: public Intra.Models.UserItem user {get;セット; } ありがとうございます。 – Ber53rker

答えて

1

私が理解する限り、<li/>要素をnotifyListにフェッチするためにjQueryを使用します。ここで行う必要があるのは、隠れた入力も生成することです。サンプル:

$("#btnAppend").click(function() { 
    for(var i = 0; i < 4; i++) { 
     var _val = "Foo " + i; 
     var $li = $("<li/>").text(_val); 
     var $hidden = #("<input/>"). 
      attr("type", "hidden") 
      attr("name", "foo"). 
      val(_val); 

     $hidden.appendTo($li); 

     $li.appendTo("#notifyList"); 
    } 
}); 

このコードは、あなたのDOM内の出力を次生成します。

<ul id="notifyList"> 
    <li>Foo 0<input type="hidden" value="Foo 0" name="foo" /></li> 
    <li>Foo 1<input type="hidden" value="Foo 1" name="foo" /></li> 
    <li>Foo 2<input type="hidden" value="Foo 2" name="foo" /></li> 
    <li>Foo 3<input type="hidden" value="Foo 3" name="foo" /></li> 
</ul> 

あなたはHTTPフォームポストを作るとき、あなたは下記のコントローラのアクションの実装によって値をつかむことができます。

public ActionResult Index(string[] foo) { 

    foreach(var item in foo) { 
     //Work with each individual item 
    } 

    //continue your code 
} 
+0

メモ帳で書きましたが、タイプミスがありません:s – tugberk

0

それはこのように動作しません。 htmlはビューにのみ存在します。コントローラーはhtmlの概念を持っていません(そうすべきではありません)。コントローラーに送信されるデータは1つのタイプ(GET、POST)で提供されます。他にもありますが、これがメインです。

GETは通常、クエリ文字列に関連付けられているwww.domain.com/mypage.aspx?key=value ポストフォーム

<form action="mypage.aspx" method="post"> 
    <input name="key" value="value"/> 
    <input type="submit" value="click me"/> 
</form> 

からの入力値ですので、HTMLリストに項目を追加すると、コントローラにどんな意味を提供することはありません。 javascriptとajaxは、データがサーバーに送信される方法に関するより多くのオプションを提供しますが、マークアップではなくデータが送信されます。データはキー値のペアとして送信されます。

関連する問題