从mvc5中的控制器发布到外部表单

时间:2014-12-12 09:30:46

标签: asp.net-mvc-5

我在带有按钮的mvc5视图中有一个表单。我需要在控制器中处理此表单并添加一些字段值,这些字段值从控制器中获取,然后发布到外部URL。

@using (Html.BeginForm()) 
{
    @Html.AntiForgeryToken()

    <div class="form-horizontal">
        <h4>Deal</h4>
        <hr />
        @Html.ValidationSummary(true)

        <div class="form-group">
            @Html.LabelFor(model => model.First_Name, new { @class = "control-label col-md-2" })
            <div class="col-md-10">
                @Html.TextBoxFor(model => model.First_Name, new { @class = "form-control" })
                @Html.ValidationMessageFor(model => model.First_Name)
            </div>
        </div>
        <div class="form-group">
            @Html.LabelFor(model => model.Last_Name, new { @class = "control-label col-md-2" })
            <div class="col-md-10">
                @Html.TextBoxFor(model => model.Last_Name, new { @class = "form-control" })
                @Html.ValidationMessageFor(model => model.Last_Name)
            </div>
        </div>
<div class="form-group">
            <div class="col-md-offset-2 col-md-10">
                <input type="submit" value="Save" class="btn btn-default" name="save" /> 
                <input type="submit" value="Register Deal" class="btn btn-default" name="submit" />
            </div>

        </div>

控制器

public ActionResult Create([Bind(Include = "Id,Name,Company,Telephone,Fax,Email,Title,Status,OpportunityAmount,First_Name,Last_Name,City,State,Country,Zip")] Deal deal, String submit)
    {
        if (ModelState.IsValid)
        {
           // do some processing and submit to another external form
        }


    }

有关我们如何实现这一目标的任何想法?

一个用例就是 如果用户提供了用户名,那么我需要从数据库查询姓氏,年龄等,并将其提交给另一个网站的注册表格

1 个答案:

答案 0 :(得分:2)

您可以使用Web请求方法发布。例如。

public void post()
{
    string URL = "http://";
    System.Net.WebRequest webRequest = System.Net.WebRequest.Create(URL);
    webRequest.Method = "POST";
    webRequest.ContentType = "application/x-www-form-urlencoded";
    Stream reqStream = webRequest.GetRequestStream();
    string postData = Request.QueryString; //you form data in get format 
    byte[] postArray = Encoding.ASCII.GetBytes(postData);
    reqStream.Write(postArray, 0, postArray.Length);
    reqStream.Close();
    StreamReader sr = new StreamReader(webRequest.GetResponse().GetResponseStream());
    string Result = sr.ReadToEnd();
}