加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc – 在MVC视图中,如果在表单标记中没有指定,则调用哪

发布时间:2020-12-16 06:39:15 所属栏目:asp.Net 来源:网络整理
导读:我有一个继承的MVC项目.在视图上,BeginForm标记中没有指定路由(控制器和操作).视图呈现正确,因此我假设它正在选择默认路由. 我的问题是,如果没有指定路线,它是如何知道使用的路线?这里的最佳做法是:您是指定路线还是让它默认? 所以视图是Views / Config /
我有一个继承的MVC项目.在视图上,BeginForm标记中没有指定路由(控制器和操作).视图呈现正确,因此我假设它正在选择默认路由.

我的问题是,如果没有指定路线,它是如何知道使用的路线?这里的最佳做法是:您是指定路线还是让它默认?

所以视图是Views / Config / WorkCodes.cshtml,标签是

Html.BeginForm()

它进入控制器ConfigController.cs并调用操作WorkCodes().如果我正在做这个项目,我会写的

Html.BeginForm("WorkCodes","Config",FormMethod.Post)

MVC如何知道使用哪个控制器和操作而不指定它?

WorkCodes.cshtml

@{
  ViewBag.Title = "Work Codes";
}

@using (Html.BeginForm())
{
<div>
    <table style="width: 100%;" class="trHoverHighlight">
        <tbody>
            <tr>
                <td>
                    <br />
                    <div>
                        <button id="buttonCreateNew" type="button">Add New</button>&nbsp;
                        <button id="buttonReturn" type="button">Return</button>
                    </div>

                </td>
            </tr>
        </tbody>
    </table>
</div>

}

ConfigController.cs

public ActionResult WorkCodes()
    {
        return View(Rep.GetWorkAll(true));
    }

这是从另一个视图中调用视图的位置:

@foreach (var itm in (List<string>)ViewBag.ListObjects)
                {
                        <li>
                            <a href="../Config/@itm">Work Codes</a>
                        </li>  
                }

解决方法

View是从执行HTTP GET到WorkCodes控制器操作生成的,因此默认情况下,在该视图中生成的表单会对具有相同名称的控制器操作执行HTTP POST.

Here’s the MSDN docs.

BeginForm(HtmlHelper) Writes an opening tag to the response. The form uses the POST method,and the request is processed by the action method for the view.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读