使用 webgrid 帮助器,我使用了一些 JavaScript 来使整行可点击,并且效果很好,但是 JavaScript 中的 href 链接我需要合并 razor。
这里的javascript代码:
<script type="text/javascript">
$(function(){
$('tbody tr').live('hover', function(){
$(this).toggleClass('clickable');
}).live('click', function(){
location.href = '/Messages/Reply/' + $(this).find('td:first').text();
});
});
</script>
但是这段代码正在获取第一个单元格中的值并在链接中使用该值,我想发送一个未显示在 webgrid 中的不同值。在这种情况下,为每条消息生成一个名为“messageGuiD”的 guid。
我尝试用 messageGuiD 替换 'td:first' 并使用逗号、句点、冒号和任何东西来让它工作但没有成功。我最接近的是我将 messageGuiD 字段作为 webgrid 的一部分并使用样式来制作它隐藏了(显示:无),并且它可以将 messageGuiD 发送到 URL,但这会使标题不合适并且对表格格式有一些副作用......
webgrid 助手从数据库生成了一个表,在这种情况下它是一个消息收件箱,这里是一个生成的 html 示例:
<table class="table" data-swhgajax="true" data-swhgcontainer="contentgrid" data- swhgcallback="addCheck">
<thead>
<tr class="header">
<th scope="col">
<a data-swhglnk="true" href="/Messages/Inbox?sort=FromUser&sortdir=ASC">From</a> </th>
<th scope="col">
<a data-swhglnk="true" href="/Messages/Inbox?sort=messageSubject&sortdir=ASC">Subject</a> </th>
<th scope="col">
<a data-swhglnk="true" href="/Messages/Inbox?sort=DateSent&sortdir=ASC">Date Sent</a> </th>
<th scope="col">
</th>
</tr>
</thead>
<tbody>
<tr class="rows">
<td class="mfrom">benatssu</td>
<td class="msubject"><a href="/Messages/Reply/msg-c75b7310-3708-42b2-bb6a-084ac97dd63c">hello</a></td>
<td class="mdate">Feb 4, 2013<br>8:02 PM</td>
<td class="mdel"><input type="checkbox" name="deleteMsg" value="msg-c75b7310-3708-42b2-bb6a-084ac97dd63c"></input></td>
</tr>
</tbody>
</table>
用户可以通过单击链接到主题列的主题来打开他们的消息,获取 webgrid 助手中使用的链接的代码如下:
format: @<a href="~/Messages/Reply/@item.messageGuiD">@item.messageSubject</a>
JavaScript 中 td:first 的问题在于它生成与第一个单元格中的内容的链接,在我的情况下,这里是消息来自谁,并且会生成一个链接 /Messages/Reply/benatssu 即使我将主题移至第一列,链接将变为 /Messages/Reply/hello。
一种方法是让 messageGuiD 显示在第一列中,链接变为 Messages/Reply/msg-c75b7310-3708-42b2-bb6a-084ac97dd63c (这是我想要的),但随后我在表格中显示了一个丑陋的长数字.
无论如何,这个问题已经持续了足够长的时间,如果有人知道一种不复杂的方法来让 JavaScript 从数据库中读取值,那就太棒了,如果没有那么没关系,代码可以使用到主题名称的较小链接,它只是整行可选更漂亮。谢谢你的时间。