Asp.net mvc 4 MVC避免查询字符串,url太长
我有一个带有复选框的表格,其中包含许多联系人列表,复选框用于他们选择要显示在下面文本框中的特定联系人。我的问题是,当我尝试单击“添加”按钮时,它会抛出一个错误,即我的url太长,主要是因为它似乎试图通过querystring解析每个输入。。有没有其他方法可以让这一切顺利进行 视图:Asp.net mvc 4 MVC避免查询字符串,url太长,asp.net-mvc-4,checkbox,input,query-string,Asp.net Mvc 4,Checkbox,Input,Query String,我有一个带有复选框的表格,其中包含许多联系人列表,复选框用于他们选择要显示在下面文本框中的特定联系人。我的问题是,当我尝试单击“添加”按钮时,它会抛出一个错误,即我的url太长,主要是因为它似乎试图通过querystring解析每个输入。。有没有其他方法可以让这一切顺利进行 视图: 除非您对JS有什么理由,否则请查看asp.NETMVC已经内置了什么。您的控制器操作方法将某种类型的集合作为参数,并且您可以使用带有索引值的for not foreach循环html 看看这首老歌,但是很好: 您能显
除非您对JS有什么理由,否则请查看asp.NETMVC已经内置了什么。您的控制器操作方法将某种类型的集合作为参数,并且您可以使用带有索引值的for not foreach循环html 看看这首老歌,但是很好:
您能显示或@Html.BeginForm。。。视图的一部分?为什么要用JavaScript填充两个隐藏字段,而不是简单地通过post提交表单?@DavidG its在表的顶部我使用JavaScript在列表中保留以前添加的联系人。因为每次我添加一个新联系人时,get方法都会触发,它会删除文本框中以前添加的联系人。如果我知道您想创建一条消息,发送给列表中所有您选择正确的联系人?那么您是否要提交到CreateMessage操作方法?是。我正在创建一个类似outlook的表单。我的tblcontacts在一个手风琴窗格中,每次启动add按钮时,createmessage的get方法都会启动。不是在计算机上,所以我会尽全力。将CreateMessage参数更改为Contacts[]Contacts。在razor中,将foreach更改为,以确保引用此联系人[i].selected等项。表单提交时,将拉出数组中selected=true的所有行。然后,您可以在action方法中构建字符串,并返回在文本字段中使用该值。没有拦截JS提交。
<table id="tblcontacts>
<tr>
<th colspan="1">
<input type="checkbox" id="checkall" /><span>Select All</span>
</th>
<th colspan="2"></th>
</tr>
<tr>
<th>
@Html.DisplayNameFor(model => model.contacts.First().Selected)
</th>
<th>
@Html.DisplayNameFor(model => model.contacts.First().ContactName)
</th>
<th>
@Html.DisplayNameFor(model => model.contacts.First().ContactNo)
</th>
</tr>
@foreach (var item in Model.contacts)
{
<tr>
<td style="text-align: center">
@Html.CheckBoxFor(modelItem => item.Selected)
</td>
<td id="contactname">
@Html.DisplayFor(modelItem => item.ContactName)
</td>
<td id="contactnos">
@Html.DisplayFor(modelItem => item.ContactNo)
</td>
</tr>
}
</table>
@* Populate Contacts via Jquery(Commonscript.js) during add click *@
<input id="hfContacts" name="hfContacts" type="hidden" />
<input id="hfContactnos" name="hfContactnos" type="hidden" />
<div class="buttons">
<input id="btnadd" type="submit" value="Add" />
</div>
$('#btnadd').click(function () {
//get txtMessageTo value
contactname = $('#txtMessageTo').val() || "";
if (contactname != "")
contactname += ',';
//check <tr> for checked status where <td id="contact">
$('#tblcontacts tr').filter(':has(:checkbox:checked)').children('#contactname').each(function () {
thisContact = $(this);
// Checks if contact was previously added already.
if (!(contactname.indexOf($.trim(thisContact.text())) > -1))
contactname += $.trim(thisContact.text()) + ',';
});
$('#hfContacts').val(contactname);
});
public ActionResult CreateMessage(string hfContacts, string hfContactnos)
//adds contacts to model to be displayed on a separate textbox form