所以我有一个名为Index.cshtml的页面
我的输入格式为id“cvr”:
@using (Html.BeginForm("SendMailAsACompany", "Contract", null, FormMethod.Post, new { id = "cvr" }))
{
<input type="hidden" value=@Html.ViewData.Model.StudentId name="studentId" />
<input type="hidden" value=@Html.ViewData.Model.CompanyId name="companyId" />
<input type="hidden" value=@Html.ViewData.Model.ApplicationId name="applicationId"/>
if (User.Identity.GetUserId() == Html.ViewData.Model.CompanyId)
{
<input type="text" name="companyCVR" placeholder="Indsæt CVR-nr."/>
}
}
并在页面底部我有上面的id(“cvr”)提交按钮,我试图再添加两个表单传递给控制器(repFirstName和repLastName):
@if (User.Identity.GetUserId() == Html.ViewData.Model.CompanyId)
{
using (Html.BeginForm("SendMailAsACompany", "Contract", null, FormMethod.Post, new { id = "cvr" }))
{
<input type="text" name="repFirstName" placeholder="Indsæt fornavn" />
<input type="text" name="repLastName" placeholder="Indsæt lastnavn" />
}
<input type="button" value="Submit" onclick="$('#cvr').submit();" class="btn btn-success" />
}
但是他们不会传递提交,只会传递第一个值(上面的CPR)。但是,如果我在开始时拥有所有三个值,它们将成功通过。
如何在两个地方都有输入,仍然可以提交数据并将数据传递给控制器?我需要两个单独的表格/ ID吗?
答案 0 :(得分:2)
只需要一个表单,删除第二个表单声明,并使用在页面底部定义的form
attribute将表单与表单相关联。
form属性用于将input,select或textarea元素与表单(称为表单所有者)相关联。
@if (User.Identity.GetUserId() == Html.ViewData.Model.CompanyId)
{
<input type="text" name="repFirstName" placeholder="Indsæt fornavn" form="cvr"/>
<input type="text" name="repLastName" placeholder="Indsæt lastnavn" form="cvr"/>
<button form="cvr" class="btn btn-success">Submit</button>
}
答案 1 :(得分:0)
如果您生成的HTML会产生多个具有相同ID的元素,那么您会有一些像这样的内联JavaScript:
<input type="button" value="Submit" onclick="$('#cvr').submit();" />
然后上面的javascript只适用于第一个#cvr
这就是为什么你不能/不能在页面上有多个具有相同ID的元素的一个例子。
您必须重构代码,才能使用任何给定ID的元素。 如果需要具有相同名字对象的多个元素,请使用class
- 这样您的javascript就会变为:
<input type="button" value="Submit" onclick="$('.cvr').submit();" />
,您生成的HTML将为class="cvr"
,而不是id="cvr"
或者,您可以确保每个表单使用不同的ID,例如id="cvr1"
,id="cvr2"
,id="cvr3"
,然后您的javascript可以是:
<input type="button" value="Submit" onclick="$('#cvr1, #cvr2, #cvr3').submit();" />