控制器中带有操作的 GET 和 POST - VB.NET 2012 MVC 4

Posted

技术标签:

【中文标题】控制器中带有操作的 GET 和 POST - VB.NET 2012 MVC 4【英文标题】:The GET and POST with an Action in the Controller - VB.NET 2012 MVC 4 【发布时间】:2012-11-06 16:21:28 【问题描述】:

编辑:

函数“TheColorNameFunction” 运行成功。问题是,如何让 return View() 函数返回到 "TheRequest" View

已解决:

只需将View 名称写入return View(),如下所示:return View("TheRequest")


控制器:

Function TheRequest() As ActionResult

        Return View()
    End Function


    <HttpPost()>
    Function TheColorNameFunction() As ActionResult

        Response.Write("The color you have submitted: " & Request.Form("ColorName"))

        Return View()
    End Function

html

@Html.BeginForm("TheColorNameFunction", "Home", method:= FormMethod.Post)

<fieldset>
    <input type="text" name="ColorName" />
    <input type="submit" name="ColorName_SubmitButton" />
</fieldset>

HTML 第二:

            <ul id="menu">
                <li>@Html.ActionLink("Home", "Index", "Home")</li>
                <li>@Html.ActionLink("About", "About", "Home")</li>
                <li>@Html.ActionLink("The Request View", "TheRequest", "Home")</li>

            </ul>

【问题讨论】:

【参考方案1】:

不知道你问的是如何生成action的url,这里解释一下:Url.Action parameters?

或者如果你只是想提交,那么你只需要:

<input type=submit value="submit" />

您已经有了要发布到操作的表单,所以提交按钮就足够了。

我是否正确理解了您的问题?

更新:对于要传递的值,只需在您的操作中传递一个参数,如下所示:

    <HttpPost()>
    Function TheColorNameFunction(colorName as String) As ActionResult

MVC 的机制足够智能,可以根据表单中的任何字段或值构建复杂的对象

你的动作应该这样写:

 @Url.Action("TheColorNameFunction", "Home", "green")

【讨论】:

我已经编辑了这个问题。问题是关于“在按下提交按钮后将其返回视图”。 HTML.BeginForm 接管了您在编写的更新中建议的内容。 View 在函数中通过“return View()”返回,但 View 被称为“TheRequest”,这就是它应该返回的 View。【参考方案2】:

如果我正确理解了您的问题,可以通过使用 ViewData 或视图模型来完成。 ViewData 在您的情况下使用起来更简单。

使用 ViewData:

你的行动方法:

<HttpPost()>
Function TheColorNameFunction(ColorName as String) As ActionResult
    ViewData("message") = "The color you have submitted: " & ColorName
    Return View()
End Function

在您的视图中,您可以像这样显示消息:

@ViewData("message")

更新:好的,如果我理解正确,您只想返回到标题为“TheRequest”的原始视图,对吗?有两种方法可以做到这一点......而不是return View(),您可以使用return TheRequest(),或者如果.vbhtml 文件的名称是“TheRequest”,您可以使用return View("TheRequest")

【讨论】:

该功能确实有效。它是不返回视图的 POST 值。我在函数中有一个“return View()”,但该视图被称为“TheRequest”。

以上是关于控制器中带有操作的 GET 和 POST - VB.NET 2012 MVC 4的主要内容,如果未能解决你的问题,请参考以下文章

http、https请求URL中带有&等特殊字符的解决方法

参数中带有 IEnumerable 的 C# OData Web API POST 端点返回错误 400,输入无效

php 发送post请求且header中带参数bug调试

C#.NET 中带有部分 URL 的 Http Post

VB如何实现发送POST请求?

GET 和 POST 请求的相同 Rails 4 路由