是否可以在视图中创建对象并通过ajax将其发送到控制器?
使用
$.ajax({
type: "POST", etc....
??? 我想发送一个我在视图中收到的类型的对象
@model Project1.ViewModels.ModelSample
答案 0 :(得分:9)
这是完全(且容易)的可能。
@xixonia提供了您可能需要的所有信息。但是这些示例是相当基本的,如果您有某种复杂的对象,可能无法提供信息:
public class Person
{
public int Id { get; set; }
public string Name { get; set; }
public Person Spouse { get; set; }
public IList<Person> Children { get; set; }
}
任何在其树中具有多个属性级别的对象都被视为复杂对象。 使用@xixonia提供的技术将无法在这种情况下工作。
因此,如果您还想使用这种场景,我建议您阅读this blog post详细描述整个问题,并提供一个相当简单的jQuery插件,甚至可以发送复杂的对象到Asp.net MVC控制器动作,它将模型绑定到你的任何复杂的强类型。
同一博客上的其他帖子也可能会有所帮助:
IList<T>
action parameters (or within complex type parameters) 如果您将在Asp.net MVC中使用Ajax,您会发现这些帖子非常有用,并且可以在您遇到此类问题时为您节省大量的开发时间。
答案 1 :(得分:4)
这是我的工作方式:
$.post("/Controller/Action", $("#form").serialize(), function(json) {
// handle response
}, "json");
[HttpPost]
public ActionResult TV(MyModel id)
{
return Json(new { success = true });
}
答案 2 :(得分:3)
是否可以在中创建对象 视图并将其发送到控制器 通过ajax?
绝对。您可以使用ASP.NET MVC的模型绑定。
var data =
{
Id: 5,
Value: "Hello, world!"
};
$.post('Home/MyAction', data);
你应该有一个匹配的POCO:
public class MyPoco
{
public int Id { get; set; }
public string Value { get; set; }
}
一个让你的模型绑定的动作:
public ActionResult MyAction(MyPoco myPoco)
{
if(ModelState.IsValid)
{
// Do stuff
}
}
这应该会自动将您的请求反序列化为POCO。