Я удалил AJAX.BeginForm добавленный Ajax.ActionLink, который не отправляет форму .. вместо этого он передает единственный параметр в контроллер, который мне нужно проверить .. Вот код ..
<% using (Html.BeginForm()) { %>
<%: Html.ValidationSummary(true, "Account creation was unsuccessful. Please correct the errors and try again.") %>
<fieldset>
<div class="editor-label">
<%: Html.LabelFor(m => m.UserName) %>
</div>
<div class="editor-field">
<%: Html.TextBoxFor(m => m.UserName) %>
<%: Html.ValidationMessageFor(m => m.UserName) %>
</div>
<%= Ajax.ActionLink("Checkavailability", "Checkavailability", new { UserName = "" }, new AjaxOptions { UpdateTargetId = "textEntered" }, new { id = "u" })%>
<span id="textEntered">Nothing Entered</span>
<p>
<input type="submit" value="Register" />
</p>
</fieldset>
<% } %>
Ниже приведен jQuery, который используется для установки передаваемых параметров
<script type="text/javascript">
$(document).ready(function () {
$('#UserName').blur(function () {
changeActionURL();
});
});
function changeActionURL() {
if ($("#UserName").val() == "") {
alert('Please enter your email to check availablity');
}
else {
var url = '<%= new UrlHelper(ViewContext.RequestContext).Action("Checkavailability", "Account") %>' + '?UserName=' + $("#UserName").val();
$("#u").attr('href', url);
}
}
</script>
контроллер: ..
public string Checkavailability(string UserName)
{
if (UserName != "Enter text" && !String.IsNullOrEmpty(UserName))
{
string userName = UserName.ToLower();
NorthwindEntities dbContext = new NorthwindEntities();
var query = from p in dbContext.Employees
where p.FirstName.ToLower() == userName
select p;
IEnumerable<Employee> rec = query.ToList();
if (rec.Count() == 0)
{
return "You entered: \"" + UserName.ToString() + "\" available ";
}
else
{
return "You entered: \"" + UserName.ToString() + "\" already exists " +
DateTime.Now.ToLongTimeString();
}
}
return String.Empty;
}