2014-03-05 29 views
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; }   

    } 
+0

看到这个问题,这类似于你:https://stackoverflow.com/questions/10110482/asp-net-mvc-3-张贴复杂json模型的行动 –

+0

看起来更接近...将尝试。 Thx – kheya

+0

我检查了一下。我的代码与解决方案中的Darrin所提出的完全相同。我测试了我正在传递的json。这是一个有效的json。但仍然我的控制器对象有空值... – kheya

回答

0

您的操作期待JSON,但您也有一个字符串ID参数。移动ID为JSON并记得设置你的内容类型:

dataType: 'json', 
contentType: 'application/json', 
+0

问题出在我正在使用的库中。似乎现在修好了。 – kheya

相关问题