Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# ASP.NET MVC以XML字符串形式提交字段_C#_Asp.net Mvc - Fatal编程技术网

C# ASP.NET MVC以XML字符串形式提交字段

C# ASP.NET MVC以XML字符串形式提交字段,c#,asp.net-mvc,C#,Asp.net Mvc,我试图通过API而不是通常的将表单数据作为XML字符串提交 API接受XML字符串作为参数,如:HelloWorld 在Web表单中,我使用的旧方法是 String dataXml = "<Data>"; dataXml += "<firstnamex>" + firstnamex.Text + "</firstnamex>"; dataXml += "<lastnamex>" + lastnamex.Text + "</lastnamex&

我试图通过API而不是通常的
将表单数据作为XML字符串提交

API接受XML字符串作为参数,如:
HelloWorld

在Web表单中,我使用的旧方法是

String dataXml = "<Data>";
dataXml += "<firstnamex>" + firstnamex.Text + "</firstnamex>";
dataXml += "<lastnamex>" + lastnamex.Text + "</lastnamex>";
dataXml += "</Data>";

既然我不能像在Web表单中那样抓取
firstnamex.Text
控件,我该怎么做呢?

它看起来像这样

[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
}
[HttpPost]
公共行动结果你的行动(你的模型)
{
字符串dataXml=“”;
dataXml+=“”+model.FirstName+“”;
dataXml+=“”+model.LastName+“”;
dataXml+=“”;
// ...
返回视图(模型);//或重定向或其他
}

您需要一个ViewModel,它表示您在此“页面”上从用户收集的内容,以便完成调用。首先,创建一个ViewModel来保存这些内容。此ViewModel还应包含实际调用DAL的代码。让您的控制器太清楚需要对实际数据做什么是一个坏主意。只需让它知道调用ViewModel的方法,以及如何处理返回值(如果有)

公共类YourViewModel
{
公共字符串名{get;set;}
公共字符串LastName{get;set;}
//根据需要在此处输入其他字段。
公共视图模型()
{
//您可以在此处输入所需的任何字段默认值
}
公共字符串插入记录()
{
字符串dataXml=“”;
dataXml+=“”+firstnamex.Text+“”;
dataXml+=“”+lastnamex.Text+“”;
dataXml+=“”;
mainApi.service1ws=新的mainApi.Service1();
返回ws.InsertRecord(dataXml);
}
}
公共类控制器
{
公共行动结果你的行动()
{
var viewModel=newyourviewmodel();
返回视图(viewModel);
}
[HttpPost]
公共操作结果YourAction(YourViewModel viewModel)
{
var resultfromsert=viewModel.InserRecord();
//根据上面返回的字符串或其他内容重定向到此处。
}
}

我喜欢我的模特胖;我的身体很瘦;我的观点完全是愚蠢的

从模型中获取名字。一个很好的开始是,在过去的几个月里,我已经做了很多MVC教程,但我仍然无法理解。我知道我应该先设置模型,然后基于模型创建一个视图,但我的问题是在用户单击submit后将结果生成一个XML字符串。否。。。ViewModel应该是哑的。它应该只负责视图所需的信息。看,我认为这些人真的非常聪明,但我个人并不喜欢像
“规则2”这样的东西——对于每种ViewModel类型,都定义了一个强类型视图“
。我将我的ViewModels扩展了一点,并允许不同的视图根据需要使用它们。可以精简ViewModel,但我认为这不是绝对需要的。我对直接了解我的业务领域的ViewModel很满意,但如果您想添加另一个抽象层以实现可分割性,也可以。
[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
}
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.
    }
}