ASP.NET MVC将字段作为XML字符串提交
本文关键字:XML 字符串 提交 字段 NET MVC ASP | 更新日期: 2023-09-27 18:04:36
我试图通过API而不是通常的<form action="http://www.mysite.com" method="post">
提交表单数据作为XML字符串。
API接受XML字符串作为参数,如:<Data><firstnamex>Hello</firstnamex><lastnamex>World</lastnamex></Data>
。
在Web Forms中我使用的旧方法是
String dataXml = "<Data>";
dataXml += "<firstnamex>" + firstnamex.Text + "</firstnamex>";
dataXml += "<lastnamex>" + lastnamex.Text + "</lastnamex>";
dataXml += "</Data>";
和
mainApi.Service1 ws = new mainApi.Service1();
string retVal = ws.InsertRecord(dataXml);
因为我不能像在Web表单中那样抓取firstnamex.Text
控件,我该如何做到这一点?
您需要一个ViewModel来表示您在这个"页面"上从用户那里收集的内容,以便完成调用。首先,创建一个ViewModel来保存这些东西。这个ViewModel还应该包含实际调用DAL的代码。让你的控制器过于清楚需要对实际数据做什么是一个坏主意。只需让它知道在ViewModel上调用哪个方法,以及如何处理返回值(如果有的话)。
public class YourViewModel
{
public string FirstName { get; set; }
public string LastName { get; set; }
// other fields here as needed.
public YourViewModel()
{
// you can put any field defaults you need here
}
public string InserRecord()
{
String dataXml = "<Data>";
dataXml += "<firstnamex>" + firstnamex.Text + "</firstnamex>";
dataXml += "<lastnamex>" + lastnamex.Text + "</lastnamex>";
dataXml += "</Data>";
mainApi.Service1 ws = new mainApi.Service1();
return ws.InsertRecord(dataXml);
}
}
public class YourController
{
public ActionResult YourAction()
{
var viewModel = new YourViewModel();
return View(viewModel);
}
[HttpPost]
public ActionResult YourAction(YourViewModel viewModel)
{
var resultFromInsert = viewModel.InserRecord();
// redirect here based on string returned above, or whatever.
}
}
我喜欢我的模特胖;我的控制器很瘦;我的观点完全是弱智。
应该是这样的…
[HttpPost]
public ActionResult YourAction(YourModel model)
{
String dataXml = "<Data>";
dataXml += "<firstnamex>" + model.FirstName + "</firstnamex>";
dataXml += "<lastnamex>" + model.LastName + "</lastnamex>";
dataXml += "</Data>";
// ...
return View(model); // or redirect or whatever
}