我在视图中渲染了一个 ViewUserControl(.ascx 文件):
<% Html.RenderPartial("Comments", Model.Comments); %>
此 ViewUserControl 显示条目的相关注释。我希望这个控件也能渲染出一个表单,所以我的应用程序的用户可以做出贡献。
您将如何将表单添加到 ViewUserControl 并处理它的回发?
我在视图中渲染了一个 ViewUserControl(.ascx 文件):
<% Html.RenderPartial("Comments", Model.Comments); %>
此 ViewUserControl 显示条目的相关注释。我希望这个控件也能渲染出一个表单,所以我的应用程序的用户可以做出贡献。
您将如何将表单添加到 ViewUserControl 并处理它的回发?
没有 postaback,就像在标准的 asp.net 中一样,只能有将数据发布到某个 url(控制器/动作)的表单标签。
在您的部分用户控件中,编写:
<form action="controller/actionname" method="post">
<input type="text" name="inputText" />
<input type="submit" value="Post data to server" />
</form>
在 MVC 中,只有输入 type="submit" 才会触发表单提交。在标准的 ASP.NET webforms 中,您可以有许多 Linkbuttons、Buttons ......但在幕后,它们都通过 javascript 事件触发了对 input type="submit" 的简单点击。一种表单只能将数据发布到一个 URL(控制器/操作),但可以使用 javascript 进行更改(正如我们在“旧”asp.net webforms 的 html 源代码中看到的那样)。
然后,在控制器中,您可以处理发布数据:
[AcceptVerb(HttpVerb.Post)] // optionally
public ActionResult ActionName(string inputText) ...
只需在其中添加与在任何页面上相同的表单即可。在 MVC 中,表单不会像这样回发 - 它只是通过 HTTP Post 将自身及其内容(输入控件)提交到 URL。
只需在您的控制器中创建一个操作(因此是一个 URL),表单将发布该操作并在那里执行所需的任何活动......
就像其他人已经回答的那样,您只需渲染一个表单并使用 ActionResult 处理它的提交。
例如,如果您的表单(可以在您网站的任何位置呈现)正在提交到http://www.yoururl.com/home/save,您将在主控制器上创建一个名为 save 的 ActionResult 方法来处理提交(可能的发布/获取方法)。