我对此很新,所以如果我错过了一些明显的东西,我会道歉。
我尝试使用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" />
}
然而,当按下提交按钮时,它似乎只是刷新当前页面并且没有调用正确的控制器。
我已经通过各种网站进行了彻底搜索,但我找不到满意的解决方案。因此,非常感谢任何帮助。
答案 0 :(得分:0)
问题应该在路径映射中。您应该使用它来指定动态路由。 ES:
[Route("blog/{articleId}")]
public ActionResult GetArticle(int articleId) { ... }
可能在创建表单时,动态值仍然不存在(您稍后将创建它们)。 暂时尝试并删除路由属性,看看它是否有效。
答案 1 :(得分:0)
现在,在更改路线映射后,表单帖子将按要求运行。
我正在使用:
routes.MapMvcAttributeRoutes();
用于定义属性路由,因此我决定对此进行注释并恢复RouteConfig中的默认代码。然后表单将正确的数据发布到正确的操作方法。因此,这必须是我的自定义属性路由的问题。
感谢您的所有建议和帮助。