Asp.net MVC填充了主要领域的相关领域

时间:2012-12-20 10:48:18

标签: jquery asp.net-mvc

使用asp.net MVC,有一种最佳实践方法,一旦用户输入主键字段,就会异步填充相关字段。例如,一旦用户在表单上输入了EmployeeID,如果输入的EmployeeID有效,则应填充employeeName。

(我已经使用RemoteAttribute验证输入的EmployeeID是否有效,并且希望这能够以某种方式返回相关字段,因为它已经调用了存储库。)

2 个答案:

答案 0 :(得分:2)

您可以使用jQuery调用传递Id的异步操作并使用return填充结果,尝试类似

 $(document).ready(function() {

    $("#employeeId").change(function() {

         $.ajax({
            url: '@Url.Action("GetEmployeeData", "Employee")',
            type: 'POST',
            dataType: 'json',
            data: { employeeId : $("#employeeId").val() },
            contentType: 'application/json; charset=utf-8',
            success: function (data) {
                if (data.success)
                {
                    // fill the employee name
                    $("#employeeName").val(data.employeeName);
                }
                else
                {
                    // show a message in a alert or div
                    alert('This Employee ID is not valid. Try again!');
                    $("#employeeId").text("").focus();
                }
            }
        });

    });

});

在您的操作中,尝试创建一个post方法来返回Name或您需要的任何属性,只需添加到Josn方法返回。

[HttpPost]
public ActionResult GetEmployeeData(string employeeId)
{
    var employee = /* get your employee using employeeId parameter from Repository*/;
    if (employee != null)
    {
        return Json(new { success = true, employeeName = employee.Name });
    }
    return Json(new { success = false });
}

答案 1 :(得分:1)

不,RemoteAttribute不返回数据值,仅返回验证信息。这里最好的做法是使用javascript / jquery / ajax。如果您已经有一个表单元素包装您的员工ID文本框,您可以在验证成功时提交它。然后,您可以使用javascript拦截该表单提交并向控制器上的操作方法发送AJAX请求,该方法返回JsonResult。当您在浏览器中收到JSON时,使用它来填充其他字段。

回复评论:

不要以嵌套的形式包装它。在表单中包含表单不是有效的HTML。如果您使用此员工ID来填充另一个表单(另一组文本框),是的,我会将它们分成2个单独的(兄弟)表单。您的JSON也应返回EmployeeID,在第二种形式中,我会将其放在隐藏字段中,而不是重复使用文本框来输入员工ID。