替换为 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 中指示的链接移动到 <head>
,但像这样解析 href
值:
<link href="@Url.Content("~/Content/dist/css/signin.css")" rel="stylesheet" type="text/css" />
【讨论】:
抱歉,它不起作用,BeginForm 覆盖了引导表单 class="form-signin" role="form"以上是关于替换为 Html.BeginForm()的主要内容,如果未能解决你的问题,请参考以下文章
Html.BeginForm 使用 FormMethod.GET 丢失 routeValues
MVC小系列Html.BeginForm与Ajax.BeginForm
<input type="file" /> 的 HTML 助手