0

我正在创建一个带有搜索属性的页面。用户将在搜索字段中输入一个数字并点击提交按钮。我需要能够调用控制器方法才能运行搜索代码。

现在我只是想点击一个部分页面来获得一些功能。以下是我到目前为止的代码。到目前为止,当我单击按钮时没有任何反应。我听说 Ajax 很有用,所以我一直在使用它。我还在学习这个框架,所以请耐心等待。

<div class="span6 roundedCorners">
    <div class="row-fluid Title">
        <div class="span6">
            Search Area
        </div>
    </div>
    <div class="row-fluid individual">
        <div class="row-fluid">
            <div class="span4"><span class="pull-right fieldDescription">Number</span></div>
            <div class="span8"><input /></div>
        </div>
        <div class="row">
            <div class="span12" id="adminSubmitButton">
                @using (Ajax.BeginForm(new AjaxOptions { UpdateTargetId = "_adminDetails" }))
                {
                    <button type="submit" class="btn btn-inverse">Submit</button>
                }
            </div>
        </div>
    </div>

4

3 回答 3

0

您的表单是空的,它只有一个提交按钮。您需要在表单内移动搜索按钮。像这样的东西:

模型

public class SearchModel
{
    [Required]
    public string Query { get; set; }
}

看法

@model SearchModel

...
@using (Ajax.BeginForm(new AjaxOptions { UpdateTargetId = "_adminDetails" }))
{
   @Html.EditorFor(m => m.Query)
   @Html.ValidationMessageFor(m => m.Query)
   <button type="submit" class="btn btn-inverse">Submit</button>
}

<div id="_adminDetails"></di>

注意:确保你有一个带有 id 的元素_adminDetails

您的控制器必须获取模型并执行搜索。例子:

控制器

 [HttpPost]
 public ActionResult Index(SearchModel model)
 {
    //do something with your model (perform search)
    return View(results);
 }
于 2013-01-17T16:59:56.917 回答
0

好的,我现在部分工作。当我单击按钮时,我可以使用以下方法调用控制器方法:

function adminButton()
        {
            $("#adminDetails").load("@Url.Action("ControllerMethod", "ControllerName")");
        }

@Url.Action 帮助器允许我调用返回部分视图的方法。这是朝着正确方向迈出的一步。但从我正在阅读的内容来看,我应该能够使用以下 Url 助手而不是 @Url.Action:

"@Url("ControllerMethod", "ControllerName")/" + submitButton.Value

我已经尝试了一些变化,但我仍在阅读以找出解决方案。有帮手可以让我这样做吗?

于 2013-01-18T16:26:01.533 回答
0

谢谢你们的帮助。我确实在星期五晚上解决了我的问题。基本上我所做的是在通过 JS/jQuery 和 Razor @Url.Action() 的帮助单击按钮时加载部分页面,以调用返回 PartialView 的控制器方法:

<script type="text/javascript">
    function adminButton()
    {
        var link = "@Url.Action("ControllerMethod", "ControllerClass", new { 
                                         number = -1})";

        var num = parseInt($("#number").val());

        link = link.replace(-1, num);

        $("#details").load(link);
    }
</script>
于 2013-01-22T14:22:36.270 回答