0
我看到我的控制器操作正确地获取了id参数。该URL在点击该操作时是正确的。为什么MVC控制器操作没有接收到具有正确值的模型对象?
即使我从js函数发送完全填充的模型对象,模型的所有字段都设置为null。
为什么控制器没有使用我正在通过的值的模型对象?
JS功能发送请求:
function updateSettings(){
//read values from the form
var name = $name_from_page;
var msg = $msg_from_page;
var abt = $abt_from_page;
var bg = $BG_from_page;
var webLinks = [];
var text = "";
var url = "";
for(var i=1; i <= 4; i++)
{
text = $text_from_page;
url = $url_from_page;
webLinks.push({ Text: text, URL: url });
}
var allowLikes = $allowLikes_from_page;
var allowComments = $allowComments_from_page;
var model = {};
model.Title = name;
model.Message = msg;
model.About = abt;
model.BannerBGColor = bg;
model.BannerBGImage = "";
model.AllowComments = allowLikes;
model.AllowLikes = allowComments;
model.WebLinks = webLinks;
//using js library to send request
Requestor
.post("Update_Page_URL")
.addParams({ model: model })
.send();
}
这就是获取传递给控制器动作:
{"Title":"Bob","Message":"Message","About":"About Bob","BannerBGColor":"#eee;","BannerBGImage":"","AllowComments":true,"AllowLikes":false,"WebLinks":[{"Text":"abc","URL":"www.abc.com"}]}
Controlelr操作:
[HttpPost]
public ActionResult UpdateSettings(string id, PageModel model)
{
//read model and update database
//model object has all fields null and the 2 booleans are false <<== ISSUE
}
中使用的模型控制器动作:
public class PageModel
{
public string UserName { get; set; }
public string Title { get; set; }
public string Message { get; set; }
public string About { get; set; }
public string BannerBGColor { get; set; }
public string BannerBGImage { get; set; }
public bool AllowComments { get; set; }
public bool AllowLikes { get; set; }
public List<WebLink> WebLinks { get; set; }
}
看到这个问题,这类似于你:https://stackoverflow.com/questions/10110482/asp-net-mvc-3-张贴复杂json模型的行动 –
看起来更接近...将尝试。 Thx – kheya
我检查了一下。我的代码与解决方案中的Darrin所提出的完全相同。我测试了我正在传递的json。这是一个有效的json。但仍然我的控制器对象有空值... – kheya