MVC5 - 将表单参数发送到控制器

时间:2015-05-04 07:47:27

标签: c# razor asp.net-mvc-5

我对此很新,所以如果我错过了一些明显的东西,我会道歉。

我尝试使用Html.BeginForm将两个字符串值发送到控制器。

这是控制器代码(在' BlogsController'中):

[Route("{type}/{variable}")]
public ActionResult BlogResult(string type, string variable)
{
}

我试图发送一个隐藏的'参数为' type' (这样我就能识别用户正在执行什么类型的查询 - 在这种情况下,字符串是' k')和一个'文本框'字符串为'变量'。这是Razor中的形式:

@using (Html.BeginForm("BlogResult", "Blogs", FormMethod.Post))
{
@Html.Hidden("type", "k")
@Html.TextBox("variable")
<input type="submit" name="Submit Keyword" />
}

然而,当按下提交按钮时,它似乎只是刷新当前页面并且没有调用正确的控制器。

我已经通过各种网站进行了彻底搜索,但我找不到满意的解决方案。因此,非常感谢任何帮助。

2 个答案:

答案 0 :(得分:0)

问题应该在路径映射中。您应该使用它来指定动态路由。 ES:

[Route("blog/{articleId}")]
public ActionResult GetArticle(int articleId) { ... }

可能在创建表单时,动态值仍然不存在(您稍后将创建它们)。 暂时尝试并删除路由属性,看看它是否有效。

答案 1 :(得分:0)

现在,在更改路线映射后,表单帖子将按要求运行。

我正在使用:

routes.MapMvcAttributeRoutes();

用于定义属性路由,因此我决定对此进行注释并恢复RouteConfig中的默认代码。然后表单将正确的数据发布到正确的操作方法。因此,这必须是我的自定义属性路由的问题。

感谢您的所有建议和帮助。