1

你可以说我是 C# MVC 的新手,遇到了一些问题,研究了很多,这是我在这里的第一个主题。

我正在开发一个使用活动目录数据的应用程序。我有一个从 AD 导入数据的表用户。这是我的控制器创建代码:

[HttpPost]
    public ActionResult Create(User user)
    {
        if (ModelState.IsValid)
        {
            DirectorySearcher directorySearch = new DirectorySearcher();
            directorySearch.Filter = "(&(objectClass=user)(SAMAccountName=" + user.IdUser + "))";
            SearchResult results = directorySearch.FindOne(); 
             if (results != null)
            {
                if (results.Properties.Contains("mail")) //E-mail
                  {
                      user.E_mail = results.Properties["mail"][0].ToString();
                  }
               else
                  {
                     user.E_mail = string.Empty;
                  }
                if (results.Properties.Contains("c")) //Country
                {
                    user.Country = results.Properties["c"][0].ToString();
                }
                else
                {
                    user.Country = string.Empty;
                }


            }

            db.User.Add(user);
            db.SaveChanges();
            return RedirectToAction("Index");
        }

        ViewBag.CompanyCode = new SelectList(db.Company, "CompanyCode", "CompanyName", user.CompanyCode);
        ViewBag.Country = new SelectList(db.Country, "CountryName", "CountryName", user.Country);
        return View(user);
    }`

这是我的一些创建视图代码:

    <div class="editor-label">
        @Html.LabelFor(model => model.IdUser)

    </div>

    <div class="editor-field">
        @Html.EditorFor(model => model.IdUser)
        @Html.ValidationMessageFor(model => model.IdUser)      

我想要做的是在 AD 中检查用户是否确实存在一个函数并将值返回到 IdUser 字段但在单击提交之前,就像检查名称一样。

我正在考虑的一个解决方案,在视图中只需放置一个按钮:

        <p>
    <input type="submit" value="Check" onClick="CheckFunction(model.IdUser)" />
    </p>

功能类似于:

        public string CheckFunction(string Id)
    {
            DirectorySearcher directorySearch = new DirectorySearcher();
            directorySearch.Filter = "(&(objectClass=user)(SAMAccountName=" + Id + "))";
            SearchResult results = directorySearch.FindOne();
            if (results != null)
            {
                return Id;
            }
            return string.Empty;
    }

但问题是我不知道如何将 Function 中返回的 Id 字符串设置为 model.IdUser 字段。

你们能帮帮我吗?

4

1 回答 1

0

您需要在按钮上放置一个类(下面的代码为 class="btnSave")

$('.btnSave').on('click', function(e){
    $.ajax({
        url: '@(Url.Action("CheckFunction", "Controller"))',
        type: 'post',
        data: {
            //this is the id that is passed.  change @Model.Id to whatever id you want sent
            Id: '@Model.Id'
        },
        success: function (result) {
            if(result.Success){
                //if this is a submit button it will do a post back.  If just a button you can set fields with the returned data or alert, etc
                $('.fieldId').val(result.Id);
            }else{
                //e.preventDefault() will stop the submit button from submitting if failed is returned
                e.preventDefault();
                //do something for failure (alert or something)
            }
        }
    });
});

然后更改您的控制器以返回 json 以表示成功或失败。这是MVC 中 json 成功和失败响应的示例

于 2013-11-06T22:08:58.237 回答