1

使用 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&amp;sortdir=ASC">From</a>             </th>
        <th scope="col">
<a data-swhglnk="true" href="/Messages/Inbox?sort=messageSubject&amp;sortdir=ASC">Subject</a>            </th>
        <th scope="col">
<a data-swhglnk="true" href="/Messages/Inbox?sort=DateSent&amp;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 从数据库中读取值,那就太棒了,如果没有那么没关系,代码可以使用到主题名称的较小链接,它只是整行可选更漂亮。谢谢你的时间。

4

2 回答 2

1
$(this).find('td:eq(1) a').attr('href');

或者你可以使用类

 $(this).find('td.msubject a').attr('href');
于 2013-02-03T10:02:09.217 回答
1

use the id of the A tag to store the messageGuiD - then modify the jquery> $(this).find('td > a').attr('id')

format: @@item.messageSubject

the idea is here... Get attr('id') from a <td> using jQuery

于 2018-11-02T03:25:31.283 回答