0

通常の ではなく、API を介して XML 文字列としてフォーム データを送信しようとしています<form action="http://www.mysite.com" method="post">

API は、次のような XML 文字列をパラメーターとして受け取ります<Data><firstnamex>Hello</firstnamex><lastnamex>World</lastnamex></Data>

私がこれを行う Web フォームの古い方法は、

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

firstnamex.TextWeb フォームのようにコントロールを取得することはできないので、どうすればよいでしょうか?

4

2 に答える 2

1

呼び出しを完了するには、この「ページ」でユーザーから収集しているものを表す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.
    }
}

私は自分のモデル脂肪が好きです。私のコントローラースキニー; そして私の見解はまったく遅れました。

于 2013-03-19T16:55:38.353 に答える
0

このようになります...

[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
}
于 2013-03-19T16:54:35.343 に答える