gpt4 book ai didi

c# - 如何将复杂对象从 jquery 传递到标记 中的 Action Controller

转载 作者:行者123 更新时间:2023-11-30 13:16:41 26 4
gpt4 key购买 nike

如何将复杂对象从 jquery 传递到标签中的 Action Controller

我有这样的 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/person =" + MyPerson +"></a>";
}

另外我还有一个像这样的 Action Controller

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; }
}

最佳答案

你可以做的是制作一个 HTTP POST请求而不是 HTTP GET .

$('#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>像这样的元素:

<a href="/test/Index" id="postLink">Ajax post the person to the server.</a>

您的 Controller 现在应该能够解析 Person对象。

编辑:您可能想要删除 List<Person>如果您没有在每个请求中传递它。它将帮助 ASP.NET 将复杂类型(在本例中为 Person)识别为请求的数据类型。通常最好也为每个 View 创建 ViewModel,这样您的 View 就有一个强类型的数据上下文。

class PersonViewModel
{
public int ID { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
}

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com