Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/456.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何更改Html.TextBox中使用Jquery和Json的值?_C#_Javascript_Asp.net_Asp.net Mvc_Json - Fatal编程技术网

C# 如何更改Html.TextBox中使用Jquery和Json的值?

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

在create视图中,我试图做的是从下拉列表中选择一个名称,用他的详细信息自动填充Login html.TextBoxFor

当前,当我从下拉列表中选择一个人时,登录文本框仍然为空

所以我得到了我的json对象并测试了我的sql,这很好,所以我想问题一定在jquery中的某个地方

如果你能帮我找出错误,我会很高兴的

查看:

@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);
    }