1

我正在构建一个基于 WebMatrix 的站点,但我忽略了一些东西。只是我没有想到的事情。

我的网站是这样组成的,因此每个页面的页眉和页脚都引用了 _SiteLayout.cshtml 页面。例如:

_SiteLayout.cshtml

<html>
<head>
</head>
<body>
     <div id="Container">
          <div id="heading">
               <input type="text" name="search" value="search" id="searchbox" />
          </div>
          @RenderBody() <!-- display Default.cshtml content -->
         <div id="footer"><p>stuff here</p></div>
     </div>
</body>
</html>

默认.cshtml

@{
     Layout = "~/_SiteLayout.cshtml";
}
<p>
 I want to display search results in the Default.cshtml (homepage) page, but I don't know how to if the search form is inside the SiteLayout page. How to do this?
</p>

所以,我的问题是我想在 Default.cshtml(主页)页面中显示搜索结果,但如果搜索表单位于 SiteLayout 页面内,我不知道该怎么做。

我该怎么做呢?

4

1 回答 1

3

您需要将该搜索输入中的信息发布到服务器。取回数据后,您可以使用它来定位您知道将在子视图中的 HTML 元素。

jQuery 文档中的这篇文章帮助了我。我的数据来自 JSON 响应,但该示例显示了如何使用 jQuery 获取结果响应并将其添加到特定元素(在本例中为<body>, 但您可以轻松地创建一个 id 为的 div “搜索结果”并以#search-results) 为目标:

$.getJSON('ajax/test.json', function(data) {
  var items = [];

  $.each(data, function(key, val) {
    items.push('<li id="' + key + '">' + val + '</li>');
  });

  $('<ul/>', {
    'class': 'my-new-list',
    html: items.join('')
  }).appendTo('body');  // Here, you could append your items to #search-results
});

然后由所有视图包含一个带有搜索结果 ID 的部分,但如果它不存在,那么数据就不会出现在任何地方。该脚本应位于单独的文件中,并在您的主站点布局中引用。

于 2012-05-11T13:31:00.673 回答