MVC3验证名称并提供表单上的选择列表

时间:2011-11-29 23:28:45

标签: ajax vb.net asp.net-mvc-3 validation

我对MVC很新,并试图找到自己的方式。我也在用VB编写代码,因为大多数例子都在C#中。但是我已经卖了......然而,我现在完全陷入了这个问题。我已经搜索了几天并尝试了很多变化,我甚至都记不起其中的一半。

这就是我想要完成的事情:我有一个表格来输入员工服务行动(即登机,终止,转移等)。在表单上,​​用户将输入经理的名字和姓氏。我需要针对AD验证该名称,如果找不到,请返回可能匹配的下拉列表供他们选择。

我正在尝试使用Ajax和部分视图执行此操作并且没有取得好成绩。目前我收到一个错误:

There is no ViewData item of type 'IEnumerable<SelectListItem>' that has the key 'Emp_Mgr_Name'

它还试图在表单最初加载时加载它 - 我不希望它在实际输入表单上的管理器名称之前执行此操作。

以下是我到目前为止的情况 - 我哪里出错,或者我正在努力做不到的事情,是否有人对如何实现这一目标有任何建议?任何帮助将不胜感激!

在我的主视图中,这些是我的脚本引用:

<script src="@Url.Content("~/Scripts/jquery.validate.min.js")"          type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/MicrosoftAjax.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery-1.4.4.min.js")" type="text/javascript"></script>

这是验证管理器名称并返回列表的脚本(这是在我的控制器中触发并调用操作):

$("#Emp_Mgr_Last_Name").change
  (function () 
  {
    $.getJSON("/EmpInfo/ValidateMgrName/" + $("#Emp_Mgr_First_Name").attr("value") + "/" + $("#Emp_Mgr_Last_Name").attr("value"),
    function (data) 
    {
      $("#ValidateMgrName").html(data)
    });
  });

以下是我的控制器中的代码(strADList确实包含运行时的名称列表):

    <HttpGet()>
    Public Function ValidateMgrName(ByVal Emp_Mgr_First_Name As String, ByVal Emp_Mgr_Last_Name As String) As ActionResult
        Dim strADList As New List(Of String)
          If Request.IsAjaxRequest Then

            Dim strADInfo = GetADInfo(Emp_Mgr_First_Name.Trim, Emp_Mgr_Last_Name.Trim)
            If strADInfo <> String.Empty Then

            Else
                strADInfo = GetADList(Emp_Mgr_First_Name.Trim, Emp_Mgr_Last_Name.Trim, strADList)
             End If

            Return Json(New With {.success = True, .data = strADList, JsonRequestBehavior.AllowGet})
        End If


    End Function

在我的主视图中,这里是我尝试使用局部视图替换代码的地方:

    <div id="ValidateMgrName">@Html.Partial("ValidateMgrName")</div>

这就是我在部分观点中所拥有的:

@Html.DropDownList("Emp_Mgr_Name")

0 个答案:

没有答案