sou*_*oul 4 c# asp.net-mvc jquery
我将viewdata传递到我的aspx页面,如下所示:
//Controller
List<user> userList = Data.GetAllUsersForCompany(companyId);
List<SelectListItem> dropDownList = FormatUserList(userList);
ViewData["UserList"] = userList;
ViewData["FormattedUserList"] = dropDownList;
return View();
Run Code Online (Sandbox Code Playgroud)
我正在使用用户名填充下拉列表,我想与Jquery绑定,以便当用户更改下拉列表时,这会依次更新当前所选用户的输入字段.
ASPX页面:
<p>
<%= Html.DropDownList("userSelected", (List<SelectListItem>)ViewData["FormattedUserList"] )%><br /><br />
<%= Html.TextBox("userFName")%><br />
<%= Html.TextBox("userLName")%><br />
<%= Html.TextBox("userEmail")%>
</p>
Run Code Online (Sandbox Code Playgroud)
我连接Jquery以检测有效的下拉更改,但是如何使用数据操作输入框?
<script type="text/javascript">
$(document).ready(function() {
$("#userSelected").change(function() {
var pkUser = $("#userSelected").val();
alert("Current UserID is " + pkUser); //works up to here just fine
$("#userFName).val() = ViewData["UserList"].Select(x => x.pkUser == valueOfDropDown).fName; ???
.
.
.
});
});
</script>
Run Code Online (Sandbox Code Playgroud)
我做错了吗?你能指出这种情况的最佳实践吗?如果我能摆脱那些理想的回发.
灵魂(MVC新手)
小智 6
看起来你正在混合你的javascript和c#,记住javascript只执行客户端,而c#只执行服务器端.话虽这么说,如果你想让你的javascript在客户端使用的一些viewdata,你需要在javascript可以获得它的页面中对其进行编码.我能想到的最简单的方法是使用JavaScriptSerializer并将值嵌入到您的javascript中,类似于:
<%
var serializer = new System.Web.Script.Serialization.JavaScriptSerializer();
%>
<script type="text/javascript">
var users = <%= serializer.Serialize(ViewData["UserList"]) %>;
//Use the users variable now with a copy of the view data.
</script>
Run Code Online (Sandbox Code Playgroud)