2011-02-24 60 views
1

我想讓用戶,因爲他想添加儘可能多的標籤,以一篇文章,說我有這些簡單的類:如何將javascript-created-textboxes的值傳遞給asp.net mvc3控制器?

public class Tag 
{ 
    public string Name { get; set; } 
} 

public class Article 
{ 
    public List<Tag> Tags { get; set; } 

    public Article() 
    { 
     Tags = new List<Tag>(); 
    } 
} 

我的控制器看起來像這樣:

public class HomeController : Controller 
{ 
    public ActionResult Index() 
    { 
     return View(new Article()); 
    } 

    [HttpPost] 
    public ActionResult Edit(List<Tag> tags) 
    {    
     //tags is null here 
     return View(); 
    } 
} 

在我看來,我只需要一個帶有名爲「add」的鏈接的簡單文本框和一個提交按鈕。當點擊「添加」時,它會調用一個javascript函數,它將輸入值並創建一個新的禁用文本框,然後將該禁用的文本框放置在指定的div中。提交時,它會發布到主頁/編輯。 「添加」部分工作正常,用戶可以根據需要添加儘可能多的標籤。

問題是,提交時,沒有新創建的禁用文本框作爲參數傳入,tags參數始終爲空。我已經確保生成的文本框具有標籤[0] .Name,標籤[1] .Name等的名稱。

是我使用$ .ajax()還是$ .post()的唯一選擇?我有更多的文本框和下拉菜單來收集我沒有在這裏顯示的用戶輸入信息,並且創建json以便在$ .ajax或$ .post中使用它似乎不是很有趣。如果可能,我希望能夠使用mvc模型綁定。

任何幫助/建議表示讚賞!

回答

1

你可以做的是建立頁面的JavaScript內存列表。

所以你在內存中創建一個標籤的物體,像

var tag= new {Name=$('input-selector').val()}; 

,然後將其推入一個對象,如下所示:

tagList.push(tag); 

當您使用添加的所有標籤做了什麼,你可以做的是使一個AJAX調用服務器如下:

$.ajax(
url:url, 
data: {tag=$.toJSON(tagList)}, 
type: "POST", 
dataType: "json", 
success: function() {} 

現在您應該可以在服務器上使用帶有所需數據的List對象。

讓我知道這是否適合你。

+0

謝謝我想我可能不得不走這條路,但我仍然困惑爲什麼這些價值不能綁定到asp.net mvc,嗯.. – wliao 2011-02-24 18:14:27

+0

這將是很好,如果你可以投票和/或標記爲回答。謝謝。 – Baz1nga 2011-02-24 18:18:50

相關問題