【发布时间】:2014-03-06 06:10:24
【问题描述】:
我看到我的控制器操作正确获取了 id 参数。 URL 正确,因为它触发了操作。
即使我从 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"}]}
控制器动作:
[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; }
}
【问题讨论】:
-
看到这个问题,看起来和你的很像:stackoverflow.com/questions/10110482/…
-
看起来更近...会尝试。谢谢
-
我检查过了。我的代码正在做与 Darrin 在解决方案中建议的相同的事情。我测试了我通过的json。这是一个有效的 json。但我的控制器对象仍然有空值......
-
但是你也有一个 id 参数可能会混淆它。尝试将 id 放入 JSON 中?