这与我以前的question有关。 我想知道,我能以同样的方式传递一个JS数组(就像上一个问题中接受的答案),即使现在我正在尝试发送更复杂的数组:
如果是,那怎么样?在控制器中接收时获取空值。 这是我的模特:
public class QuestionModel
{
public bool Choice { get; set; }
public List<object> ChoiceQuestions { get; set; } //can i use List<object>?
public int Id { get; set; }
public string Question { get; set; }
public bool Short { get; set; }
public object ShortQuestion { get; set; } //here aswell - can I use object?
public string Type { get; set; }
}
甚至不确定我是否可以重用js代码将数据发送到答案中给出的控制器。如果不是,那我该如何解决呢?我仍然必须能够通过post将数据发送到控制器,然后在处理数据后将其返回到视图。
答案 0 :(得分:0)
您可以将任何对象的 Json 制作为单个隐藏表单字段,然后使用字符串参数发布表单到操作。然后在服务器端将 json 消毒到 action 方法内的对象 - 即使在另一个控制器中。您可以从控制器方法返回不同的视图。
Javascript(在股票页面/视图上说)
var form = document.createElement("form");
var input = document.createElement("input");
input.setAttribute("type", "hidden") ;
input.setAttribute("name", "outwardStocks") ;
input.setAttribute("value", JSON.stringify(selectedrecords));
form.appendChild(input);
document.body.appendChild(form);
form.action = "/CRM/Invoice/Index";
form.method = "post"
form.submit();
控制器代码(比如发票控制器)
[HttpPost]
public IActionResult Index(string outwardStocks)
{
InvoiceItems invItems = JsonSerializer.Deserialize<InvoiceItems>(outwardStocks);
......
return View("Invoice" InvoiceVM);
}