C# 如何更改Html.TextBox中使用Jquery和Json的值?
在create视图中,我试图做的是从下拉列表中选择一个名称,用他的详细信息自动填充Login html.TextBoxFor 当前,当我从下拉列表中选择一个人时,登录文本框仍然为空 所以我得到了我的json对象并测试了我的sql,这很好,所以我想问题一定在jquery中的某个地方 如果你能帮我找出错误,我会很高兴的 查看:C# 如何更改Html.TextBox中使用Jquery和Json的值?,c#,javascript,asp.net,asp.net-mvc,json,C#,Javascript,Asp.net,Asp.net Mvc,Json,在create视图中,我试图做的是从下拉列表中选择一个名称,用他的详细信息自动填充Login html.TextBoxFor 当前,当我从下拉列表中选择一个人时,登录文本框仍然为空 所以我得到了我的json对象并测试了我的sql,这很好,所以我想问题一定在jquery中的某个地方 如果你能帮我找出错误,我会很高兴的 查看: @using (Html.BeginForm()) { @Html.AntiForgeryToken() @Html.ValidationSummary(tr
@using (Html.BeginForm()) {
@Html.AntiForgeryToken()
@Html.ValidationSummary(true)
<fieldset>
<legend>User</legend>
<div class="editor-label">@Html.LabelFor(model => model.UserLogin)</div>
<div class="editor-field">@Html.TextBoxFor(model => model.UserLogin, new {id ="LoginId" })
@Html.ValidationMessageFor(model => model.UserLogin)</div>
<div class="editor-label">@Html.LabelFor(model => model.UserFullName)</div>
<div class="editor-field">@Html.DropDownList("UserFullName", ViewBag.UserFullName as SelectList, "Select a User", new { id = "UserID" })
@Html.ValidationMessageFor(model => model.UserFullName)</div>
<p>
<input type="submit"
value="Create" />
</p>
</fieldset> }
<div>@Html.ActionLink("Back to List", "Index")</div>
<script type="text/javascript">
$('#UserID').on('change', function () {
$.ajax({
type: 'POST',
url: '@Url.Action("GetUserForm")',
data: { FullName: $('#UserID').val() },
success: function (results){
var login = $('#LoginId');
login.empty();
$.each(results, function ()
{
login.val(this.ID).text(this.Value);
});
}});
});
</script>
public ActionResult Create()
{
var names = StaffDB.StaffData.AsEnumerable().Select(s => new
{
ID = s.ID,
FullName = string.Format("{0} {1}", s.Forename1, s.Surname)
}).ToList();
if(ModelState.IsValid)
{
db.Users.Add(user);
db.SaveChanges();
return RedirectToAction("Index");
}
ViewBag.UserFullName = new SelectList(names, "FullName", "FullName", user.UserFullName);
return View(user);
}
[HttpPost]
public JsonResult GetUserForm(string FullName)
{
//pseudo code
var data = from s in StaffDB.StaffData
where s.Forename1 + ' ' + s.Surname == FullName
select new
{
Value = s.Login,
ID = s.ID
};
return Json(data);
}
我认为问题是在返回json时,在MVC中,默认情况下Jsonresult是“Deny get”,因此您添加了“Allow get”
.... 嗯。。。通过asp生成HTML(浏览器视图HTML源代码)可能很有用
@Html.TextBoxFor(model=>model.UserLogin,new{id=“LoginId”})
是输入还是文本区域?是输入。。。奇怪的是,即使我硬编码它的值仍然是空的!$。每个(结果,函数(){login.val(“test”).text(“testtext”);});结果是什么格式的?HTML?JSON?大堆可能您无法each()
结果,因为它不是由javascript解析的。调试方法是在成功函数中添加一个console.log
(或brekpoint),以了解results
的值:console.log(result)代码>一个可能是console.log()
在each()
函数中,以了解您是否有一次进入了循环…它是否真的进入了change()函数并击中了您的代码?
[HttpPost]
public JsonResult GetUserForm(string FullName)
{
//pseudo code
var data = from s in StaffDB.StaffData
where s.Forename1 + ' ' + s.Surname == FullName
select new { Value = s.Login, ID = s.ID };
if (data == null)
return Json(null);
return Json(data , JsonRequestBehavior.AllowGet);
}