我有角度服务:
statistics.factory('getData', function ($http) {
return {
result: function (url, date) {
return $http({
method: 'POST',
url: url,
data: {
date: date
}
});
}
};});
此服务发送给MVC控制器日期参数。
我想在MVC模型中看到数据参数。
我试过了:
public object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
{
var request = controllerContext.HttpContext.Request;
var date = request["date"];
var date1 = request.Form.Get("date");
var date3 = new StreamReader(request.InputStream);
var requestFromPost = date3.ReadToEnd();
}
但我总是得到零值。
这是我的模型活页夹:
public class DataBinder : IModelBinder
{
public object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
{
var request = controllerContext.HttpContext.Request;
var date = request.QueryString["date"];
return date;
}
和行动
[HttpPost]
public ActionResult GetStatisticsData([ModelBinder(typeof(DataBinder))] DataA dataA)
}
答案 0 :(得分:0)
对于您的第一个BindModel
实现,您没有返回任何对象,因此它无效,第二个有效,但您尝试从错误的集合中获取date
值它应该是Form
而不是QueryString
,并且当您在Action中的绑定期望类型object
时,也会返回DataA
。所以它应该是什么(不包括必要的检查和本地化):
public object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
{
var date = DateTime.Parse(controllerContext.HttpContext.Request.Form["date"]);
return new DataA
{
SomeDate = date
};
}
此外,我根据您的问题here发布了一个解决方案,您会看到它正在运行。我使用jquery而不是angular来快速回答,但请求与$ http相同。希望它可以帮助你并询问是否还有其他问题。