Я очень новичок в 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")