使用ASP.NET MVC将数据POST到控制器

时间:2015-05-28 18:14:35

标签: c# asp.net asp.net-mvc post

我正在使用带有C#和纯bootstrap的ASP.NET MVC。我的一个视图包含标签,文本输入框和提交按钮:

@{
   ViewBag.Title = "BinSearch";
   Layout = "~/Views/Shared/_LayoutSearch.cshtml";
}

<h2>BinConfig Search</h2>

@using (Html.BeginForm("FiEdit", "EditConfigController"))
{
    <div class="form-group">
        <label for="issuerKey">Issuer Key</label>
        <input type="text" name="key" />
        <input type="submit" class="btn btn-default" value="Search" />
    </div>
}

当我点击“提交”按钮时,我想将数据传输到控制器,EditConfigController到这个方法:

[HttpPost]
public ActionResult FiEdit(int key)
{
    return View(new IssuerKey().Key = key);
}

然后应该创建一个新视图,我可以根据提供的密钥编辑数据。这是FiEdit视图:

@model BinFiClient.Models.IssuerKey

@{
    ViewBag.Title = "FiEdit";
    Layout = "~/Views/Shared/_LayoutEdit.cshtml";
}

<h2>FiEdit</h2>

但是,当我点击“提交”按钮时,收到404错误,网址路径如下所示:

http://localhost:58725/EditConfigController/FiEdit

这实际上是我在上面发布的控制器中方法的路径。

我需要的基本上是一种将数据发布到另一个控制器的方法。我怎么能做到这一点?

编辑: 现在我收到错误:

  

传递到字典中的模型项是'System.Int32'类型,但是这个字典需要一个类型为'BinFiClient.Models.IssuerKey'的模型项。

2 个答案:

答案 0 :(得分:1)

你可以尝试:

    @using (Html.BeginForm(("FiEdit", "EditConfigController", FormMethod.Post,
                new { enctype = "multipart/form-data" })))
{
    <div class="form-group">
        <label for="issuerKey">Issuer Key</label>
        <input type="text" name="key" />
        <input type="submit" class="btn btn-default" value="Search" />
    </div>
}

答案 1 :(得分:0)

尝试使用以下代码替换您的代码:

@using (Html.BeginForm("FiEdit", "EditConfig", FormMethod.Post))
{
    <div class="form-group">
        <label for="issuerKey">Issuer Key</label>
        <input type="text" name="key" />
        <input type="submit" class="btn btn-default" value="Search" />
    </div>
}

这会将参数key发送到EditConfig控制器。

如果您想在另一个控制器中发布操作TestEdit,比如说TestController,您的代码应该更改为以下内容:

@using (Html.BeginForm("TestEdit", "Test", FormMethod.Post))
...

解决传入字典的&#34;模型项&#34;错误,将您的POST更改为:

[HttpPost]
public ActionResult FiEdit(int key)
{
    return View(new IssuerKey() { Key = key });
}