【问题标题】:Post to an external form from a controller in mvc5从 mvc5 中的控制器发布到外部表单
【发布时间】:2015-02-10 23:34:29
【问题描述】:

我在 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
        }


    }

关于我们如何做到这一点有什么想法吗?

一个用例是 如果为用户提供了用户名,那么我需要从数据库中查询名字、年龄等并将其提交到另一个站点的注册表单

【问题讨论】:

    标签: asp.net-mvc-5


    【解决方案1】:

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

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

    【讨论】:

    • 字符串 postData = Request.QueryString; //你以获取格式形成数据。我该怎么做?
    • 您的控制器中有 Request.QueryString,只需获取它并附加您的额外字段
    • 谢谢..你能给我一个附加额外字段的小例子吗?我在 Request .querystring 上收到错误消息,无法将类型“System.Collections.Specialized.NameValueCollection”隐式转换为“string”
    猜你喜欢
    • 2019-01-22
    • 1970-01-01
    • 1970-01-01
    • 2016-10-03
    • 2013-11-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多