MVC 3 Razor – Acceda a ViewData en Ajax Request (Jquery, JavaScript)

Estoy escribiendo un código donde el usuario puede verificar si ya existe un nombre de usuario en la base de datos antes de enviar el formulario. Esto funciona con el controlador de eventos onkeyup que toma el valor del cuadro de texto y lo pasa a una solicitud ajax que llama a mi método ActionResult con un parámetro de cadena. Mi lógica SQL funciona bien, recibo un valor que dice que ya existe o no.

El problema que tengo es de mi controlador, quiero devolver el valor. En la parte de éxito de mi solicitud de Jquery Ajax estoy intentando acceder a mi ViewData [“nombre del índice”] pero mi alerta muestra una cadena vacía.

Código Javascript:

function searchUsername() { var filters = getFilterVals(); $.ajax({ url: '@Url.Action("UsernameSearch", "UserManager")', type: "POST", async: true, dataType: "text", data: "username=" + filters.username, success: function () { var str = '@ViewData["UserName"]'; alert(str); $('#txtUsernameExists').val(str); configureGui(); jQueryTableStyling(); }, error: function (data) { } }); } function getFilterVals() { filters = new Object(); filters.username = $('#createuser-usernamesearch #user_name').val(); return filters; } 

Código del controlador C #:

 public ActionResult UsernameSearch(string username) { string output = DAL.usernameSearch(username); ViewData["Username"] = output; return PartialView("~/Views/Partial/_txtUsernameSearch.cshtml"); } 

¿Qué estoy haciendo mal? Cualquier sugerencia es bienvenida.

ASP.NET:

 public JsonResult UsernameSearch(string username) { string output = DAL.usernameSearch(username); return Json(new { Html = PartialView("~/Views/Partial/_txtUsernameSearch.cshtml"), Username = output }); } 

JS:

 $.ajax({ url: '@Url.Action("UsernameSearch", "UserManager")', type: "POST", async: true, dataType: "json", data: "username=" + filters.username, success: function (data) { var html = data.Html; var str = data.Username; alert(str); $('#txtUsernameExists').val(str); configureGui(); jQueryTableStyling(); }, error: function (data) { } }); 

Prueba esto:

Cambio:

 ViewData["Username"] = output; 

Para esto:

 ViewData["UserName"] = output;