我的 ASP.Net mvc 3 Web 应用程序中有以下视图:-
@model IEnumerable<MvcApplication4.Models.Account>
@{
ViewBag.Title = "customer";
}
<h3>Customers Info</h3>
<script type="text/javascript">
$(function() {
$("#MoveRight,#MoveLeft").click(function(event) {
var id = $(event.target).attr("id");
var selectFrom = id == "MoveRight" ? "#SelectLeft" : "#SelectRight";
var moveTo = id == "MoveRight" ? "#SelectRight" : "#SelectLeft";
var selectedItems = $(selectFrom + " :selected").toArray();
$(moveTo).append(selectedItems);
selectedItems.remove;
});
});
</script>
<select id="SelectLeft" multiple="multiple">
@foreach (var item2 in Model.OrderBy(a=>a.ORG_NAME)) {
<option value = "@item2.ORG_ID" >@item2.ORG_NAME</option>
}
</select>
<input id="MoveRight" type="button" value=" Add >> " />
<input id="MoveLeft" type="button" value=" << Remove " />
<select id="SelectRight" multiple="multiple">
</select>
@Html.ActionLink("Next Page", "CustomersDetials", "Home", new { }, null)//for testing only
但是我面临一个问题,我需要 通过单击“下一页”操作链接将其中的所有记录传递moveTo
给操作方法。customersDetials
所以任何人都可以建议一种方法,我可以使用该方法将moveto
上面视图中的项目传递给我的操作方法,使用html.actionlink
.
:::更新:::
我在视图中添加了以下内容:-
@using (Html.BeginForm("CustomersDetials", "Home"))
{
<select id="SelectLeft" multiple="multiple">
@foreach (var item2 in Model.OrderBy(a=>a.ORG_NAME)) {
<option value = "@item2.ORG_ID" >@item2.ORG_NAME</option>
}
</select>
<input id="MoveRight" type="button" value=" Add >> " />
<input id="MoveLeft" type="button" value=" << Remove " />
<select id="SelectRight" name="SelectRight" multiple="multiple">
</select>
<p>
<button type="submit">Next Page</button></p>
}
然后我创建了以下 ViewModel 类来洞悉所选客户的价值观:-
public class SelectedCustomers
{
public IEnumerable<Account> Info { get; set; }
}
然后我添加了以下操作方法:-
public ActionResult CustomersDetials(string[] SelectRight)
{
foreach (var item in SelectRight) {
// how to assign the values of the array to my viewmodel object
}
但是我无法确定如何将数组的值分配给我的操作方法中的 viewmodel 对象。
:::更新2:::
这就是我的结果。操作方法如下所示:-
public ActionResult CustomersDetails(string[] SelectRight)
{
var selectedCustomers = new SelectedCustomers
{
Info = SelectRight.Select(GetAccount)
};
return View(selectedCustomers);
}
private Account GetAccount(string id)
{
return entities.Account.Find(id);
}
}
以及以下观点:-
@model MvcApplication4.Models.SelectedCustomers
@{
ViewBag.Title = "CustomerDetials";
}
<h2>CustomerDetials</h2>
//code goes here
@foreach (var item in Model.Info) {
<tr>
<td>
@Html.DisplayFor(modelItem => item.ORG_ID)
</td>
但是当我运行应用程序时,我得到了以下错误:-
The type of one of the primary key values did not match the type defined in the entity. See inner exception for details.
在:-
return entities.Account.Find(id);
::已解决:: 我在操作方法和 GETAccount 函数中都将字符串更改为长字符串。