如何从剃刀中的输入获取ajaxoption post请求中的数据

时间:2012-01-10 09:58:22

标签: asp.net-mvc-3 razor

我想使用以下代码发出POST请求

<div class="editor-field" id="updateDiv" >
    @Html.EditorFor(model => model.UserName)
    @Html.ValidationMessageFor(model => model.UserName)
</div>
<div>
    @Ajax.ActionLink("Check Availability", "ValidateUsername", "Wizard", 
        new { username = "username"},
        new AjaxOptions() {
            UpdateTargetId = "msg",
            HttpMethod = "POST",
            LoadingElementId = "progress",
        }
    )
</div>

但是我想传递@Html.EditorFor(model => model.UserName)的值(用户输入的值)而不是传递静态值,我该怎么办?

1 个答案:

答案 0 :(得分:0)

首先,您似乎正在尝试创建某种远程验证。此机制已在MVC中使用,因此您可以将其与DataAnnotations

一起使用

http://msdn.microsoft.com/en-us/library/gg508808(v=vs.98).aspx

如果我的假设错了,您可以尝试根据以下内容修改代码。

我会添加htmlAttributes来设置链接的ID,如下所示:

   @Ajax.ActionLink("Check Availability", "ValidateUsername", "Wizard",
   new {username = "username"},
    new AjaxOptions()
    {
        UpdateTargetId = "msg",
        HttpMethod = "POST",
        LoadingElementId = "progress",
    }, new { id = "CheckAvailabilityLink" }
)

有了这个,我们可以直接引用这个元素,这样我们就可以跟踪文本框的变化并动态更新URL

    <script type="text/javascript">
        $(document).ready(function () {
            $("#UserName").keyup(function (e) {  // textbox id here 

                var href = $("#CheckAvailabilityLink").attr("href").split("?", 1);
                $("#CheckAvailabilityLink").attr("href", href + "?username=" + $(this).val());
                alert($("#CheckAvailabilityLink").attr("href"));
            });
        });
    </script>

</script>