替换为 Html.BeginForm()

Posted

技术标签:

【中文标题】替换为 Html.BeginForm()【英文标题】:Substitute to Html.BeginForm() 【发布时间】:2013-12-19 22:49:07 【问题描述】:

我正在使用引导程序在我的 MVC 4 应用程序中创建登录视图。 它可以工作,但这是我的登录视图:

@using (html.BeginForm())

    <link href="~/Content/dist/css/signin.css" rel="stylesheet">
    <div class="container">
        <form class="form-signin" role="form">
            <h2 class="form-signin-heading">Entrar</h2>
            <input type="text" id="User" name="UserName" class="form-control" placeholder="Usuário"   required />
            <input type="password" id="Pass" name="Password" class="form-control" placeholder="Senha" required>
            <button class="btn btn-lg btn-primary btn-block" type="submit">Entrar</button>
        </form>
    </div>

但是 css 的引用是 'link href="~/Content/dist/css/signin.css" rel="stylesheet' 行,但它仅在我删除 @Html.BeginForm() 时才有效,但是当我创建 HttpPost 时我无法触发我的操作。

如果没有Html.BeginForm(),我如何调用我的操作?

【问题讨论】:

你为什么不把那个link 元素放到表单之外。无论如何,你最好把它放在head 中。 @Kenneth 我试图将链接元素放在表单之外,但随后我更改了框和按钮大小。我需要某种方式让提交按钮知道按下它时要去哪里。没有 BeginForm 方法。 BeginForm 改变了表单和按钮的大小。 这与链接元素的位置无关。原因可能是您的 CSS 在表单中为元素定义了样式(因为您使用引导程序就是这种情况)。您应该修改您的 css 以便它不会那样做。没有表单就无法发布表单。 我检查了元素,我得到了表单 action = '/Account/LogIn?UserName=admin&Password=123456' 1020 和 156 像素。引导元素的宽度为 100% 【参考方案1】:

我现在可以看到您在彼此内部使用了两种形式。您应该删除引导程序并确保 BeginForm 发出正确的表单:

    <link href="~/Content/dist/css/signin.css" rel="stylesheet">
    <div class="container">
        @using (Html.BeginForm("your-action", "your-controller", 
                               FormMethod.Post, 
                               new  @class="form-signin", role = "form ))
        
            <h2 class="form-signin-heading">Entrar</h2>
            <input type="text" id="User" name="UserName" class="form-control" placeholder="Usuário"   required />
            <input type="password" id="Pass" name="Password" class="form-control" placeholder="Senha" required>
            <button class="btn btn-lg btn-primary btn-block" type="submit">Entrar</button>
        
    </div>

【讨论】:

我的也是。我有完全相同的两种形式的情况。【参考方案2】:

将您在 cmets 中指示的链接移动到 &lt;head&gt;,但像这样解析 href 值:

 <link href="@Url.Content("~/Content/dist/css/signin.css")" rel="stylesheet" type="text/css" />

【讨论】:

抱歉,它不起作用,BeginForm 覆盖了引导表单 class="form-signin" role="form"

以上是关于替换为 Html.BeginForm()的主要内容,如果未能解决你的问题,请参考以下文章

ASP.NET MVC Html.BeginForm用法1

Html.BeginForm 使用 FormMethod.GET 丢失 routeValues

MVC小系列Html.BeginForm与Ajax.BeginForm

<input type="file" /> 的 HTML 助手

如何使用 Html.Listboxfor 和 Html.Beginform

Html.BeginForm (ASP.NET MVC) 的问题