我正在使用带有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'的模型项。
答案 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 });
}