簡體   English   中英

如何發布一個復雜的模型來行動?

[英]How to post a complex model to action?

我的模型定義為:

public class RulePageViewModel
{
    public List<RuleItem> RuleItemList { get; set; }

    public RuleViewModel RuleViewModel { get; set; }
}

我的動作定義為:

public JsonResult Save(RulePageViewModel viewmodel)

我嘗試發布json,viewmodel.RuleItemList.Count> 0,但viewmodel.RuleItemList中的實例為null。 如果使用模型綁定,如何在視圖中綁定列表?

我沒有嘗試綁定模型,只需使用ajax將json發布即可。 我認為它將起作用,但是代碼失敗:

var s = { "RuleItemList": [{ "RuleGroupId": 1, "RuleGroupName": "", "Keywords": "ajax", "ResponseDescribe": "dadhsa" }], "RuleViewModel": { "RuleGroupId": 14, "RuleList": [{ "RuleId": 567, "SourceId": 125, "KeyValue": "callback", "SourceType": 0 }], "SourceList": [] } };
var ss = JSON.stringify(s);
var json = JSON.parse(ss);
$.ajax({
    url: '@Url.Action("Save")',
    type: 'POST',
    data: json,
    dataType: 'json',
    success: function(response) {
        alert('success');
    },
    error: function(jqXHR, textStatus, errorThrown) {
        alert(textStatus);
    }
});

好的,我解決了:

var json = { "RuleItemList": [{ "RuleGroupId": 1, "RuleGroupName": "", "Keywords": "ajax", "ResponseDescribe": "dadhsa" }], "RuleViewModel": { "RuleGroupId": 14, "RuleList": [{ "RuleId": 567, "SourceId": 125, "KeyValue": "callback", "SourceType": 0 }], "SourceList": [] } };

$.ajax({
    url: '@Url.Action("Save")',
    type: 'POST',
    data: JSON.stringify(json),
    dataType: 'json',
    contentType: 'application/json',
    success: function(response) {
        alert('success');
    },
    error: function(jqXHR, textStatus, errorThrown) {
        alert(textStatus);
    }
});

謝謝大家!

通常,您應該執行以下操作:

    @for(var i = 0;i<Model.RuleItemList.Count;++i)
    {
        @Html.TextBoxFor(m => m.RuleItemList[i].Name);
    }

    @Html.EditorFor(m = > m.RuleViewModel.PropertyOne);
    @Html.EditorFor(m = > m.RuleViewModel.PropertyTow);
    @Html.EditorFor(m = > m.RuleViewModel.PropertyThree);

最終將為html生成類似的內容:

<input type="text" name="RuleViewModel.PropertyOne" value="" />
<input type="text" name="RuleViewModel.PropertyTow" value="" />
<input type="text" name="RuleViewModel.PropertyThree" value="" />

現在,因為您沒有放置任何視圖代碼或RuleItem的任何代碼, RuleItem RuleViewModel類將特別需要回答您的問題,因此請發布更多信息,但總的來說,您應該從我在這里寫的內容中了解如何實現此類將從中將數據發布到您的控制器操作中,以便Model Binder知道要綁定的屬性。

http://www.hanselman.com/blog/ASPNETWireFormatForModelBindingToArraysListsCollectionsDictionaries.aspx

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM