加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc-3 – MVC 3(Razor) – 使用Button事件调用Controlle

发布时间:2020-12-16 00:26:34 所属栏目:asp.Net 来源:网络整理
导读:我有一个简单的Wall.cshtml视图加载一个_Search.cshtml部分视图,如下所示: h2The Wall/h2@{Html.RenderPartial("~/Views/Search/_Search.cshtml");} _Search.cshtml部分视图(基于@Darin回复更新)如下所示: @using (Html.BeginForm("Searching","Search",F
我有一个简单的Wall.cshtml视图加载一个_Search.cshtml部分视图,如下所示:
<h2>The Wall</h2>
@{Html.RenderPartial("~/Views/Search/_Search.cshtml");}

_Search.cshtml部分视图(基于@Darin回复更新)如下所示:

@using (Html.BeginForm("Searching","Search",FormMethod.Post,new { id = "searchForm" }))    
{  
    <div id="search">
        <div id="searchbtn">
           <input id="Search" type="button" value="Search" />
        </div>
        <div id="searchtxt">
           @Html.TextBox("txtSearch")
        </div>
  </div>
}

控制器如下所示:

public class SearchController : Controller
{
    public ActionResult Wall()
    {
        return View();
    }

    [HttpPost]
    public ActionResult Searching()
    {
        // do something with the search value
        return View();
    }
}

当我运行应用程序时,生成的HTML块将如下所示:

<form action="/Search/Searching" id="searchForm" method="post">  
   <div id="search">
      <div id="searchbtn">
          <input id="Search" type="button" value="Search" />
      </div>
      <div id="searchtxt">
          <input id="txtSearch" name="txtSearch" type="text" value="" />
      </div>
   </div>
</form>

问题1:为什么按钮点击从不打到搜索控制器方法?
(让我重申_Search.cshtml是在一个名为Wall.cshtml的视图中运行的部分视图)。

问题2:如何获取“txtSearch”文本框中的值?

问题3:由于这是部分视图,所以如何使拥有当前搜索部分视图的视图会刷新并使用搜索查询的结果进行更新?

解决方法

最好使用表单并使搜索按钮提交:
@using (Html.BeginForm("Search","Home",new { id = "searchForm" }))    
{
    <div id="search">
        <div id="searchbtn">
            <input id="Search" type="submit" value="Search" />
        </div>
        <div id="searchtxt">
            @Html.TextBox("txtSearch")
        </div>
    </div>
}

就您的第二个问题而言,您可以AJAXify此搜索表单:

$(function() {
    $('#searchForm').submit(function() {
        $.ajax({
            url: this.action,type: this.method,success: function(result) {
                $('#resultContainer').html(result);
            }
        });
        return false;
    });
});

其中,resultContainer可以是一些div,它将保存控制器操作返回的搜索结果。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读