C# 如何将复杂对象从jquery传递到标记中的动作控制器<;a>;
如何将复杂对象从jquery传递到标记中的动作控制器 我有这样一个jquery代码C# 如何将复杂对象从jquery传递到标记中的动作控制器<;a>;,c#,javascript,jquery,asp.net-mvc-3,controller,C#,Javascript,Jquery,Asp.net Mvc 3,Controller,如何将复杂对象从jquery传递到标记中的动作控制器 我有这样一个jquery代码 function InitCell(row, column, value) { var MyPerson = new Object(); MyPerson.ID = '123456789'; MyPerson.FirstNmae = 'abc'; MyPerson.LastName = 'def'; var html = "<a href='/test/Index
function InitCell(row, column, value) {
var MyPerson = new Object();
MyPerson.ID = '123456789';
MyPerson.FirstNmae = 'abc';
MyPerson.LastName = 'def';
var html = "<a href='/test/Index/person =" + MyPerson +"></a>";
}
public class testController : Controller
{
//
// GET: /test/
public ActionResult Index(Person person)
{
return View();
}
}
class Person
{
public int ID { get; set; }
public string LastName { get; set; }
public string FirstName { get; set; }
public List<Person> Children { get; set; }
}
函数InitCell(行、列、值){
var MyPerson=新对象();
MyPerson.ID='123456789';
MyPerson.FirstNmae='abc';
MyPerson.LastName='def';
var html=“”;
}
此外,我还有一个像这样的动作控制器
function InitCell(row, column, value) {
var MyPerson = new Object();
MyPerson.ID = '123456789';
MyPerson.FirstNmae = 'abc';
MyPerson.LastName = 'def';
var html = "<a href='/test/Index/person =" + MyPerson +"></a>";
}
public class testController : Controller
{
//
// GET: /test/
public ActionResult Index(Person person)
{
return View();
}
}
class Person
{
public int ID { get; set; }
public string LastName { get; set; }
public string FirstName { get; set; }
public List<Person> Children { get; set; }
}
公共类testController:Controller
{
//
//获取:/test/
公共行动结果指数(人)
{
返回视图();
}
}
班主任
{
公共int ID{get;set;}
公共字符串LastName{get;set;}
公共字符串名{get;set;}
公共列表子项{get;set;}
}
你不能这样做。URI是字符串。如果要在其中传递未格式化为字符串的数据,则必须将其序列化为字符串,然后在另一端反序列化
一般来说,它是一种流行的序列化格式,但请记住,并非所有字符串都是URI安全的,所以在将其包含到URI中之前,您需要先对其进行验证
不过,您只有三条数据,因此您可以:
var html = "<a href='/test/Index/person/" +
encodeURIComponent( MyPerson.ID ) + "/" +
encodeURIComponent( MyPerson.FirstName ) + "/" +
encodeURIComponent( MyPerson.LastName ) +
"></a>";
var html=”“;
或者,如果服务器上已经存在数据,只需传递ID值,然后从数据库中获取名称。查询字符串采用的参数不是您拥有的对象类型,因此您必须将其作为带分隔符& 例如:
var html = "<a href='/test/Index/person?PersonId=123456789&FirtsName=Test......
var html=“您可以做的是发出httppost
请求,而不是httpget
$('#postLink').click(function() {
var MyPerson = {
ID: 1234,
FirstName: 'abc',
LastName: 'def'
};
$.ajax({
data: MyPerson,
url: $(this).attr('href'),
type: 'POST',
dataType: 'json' /* this really is optional */,
success: function (response) {
return true;
},
error: function ( error ) {
return false;
}
)};
return false; /* required to stop event propagation */
});
现在,您可以这样定义HTML
元素:
<a href="/test/Index" id="postLink">Ajax post the person to the server.</a>
如何通过调用ajax来包含标记?您可以将整个JavaScript块包装在click事件处理程序中。我将用示例更新上面的JS代码。