【问题标题】:prevent Html.Action with JQuery使用 JQuery 防止 Html.Action
【发布时间】:2012-10-14 12:47:47
【问题描述】:

快速提问,我有这个观点

    <div class="product_list">
        @Html.Action("GetProducts", "Products")
    </div>

控制器很简单

public ActionResult GetProducts(string country, string currency, int category){
    var viewModel = new ProductsViewModel{
        Products = _proxy.GetProducts(country, currency, category, page)};

    return PartialView(viewModel);
}

然后 GetProducts 视图只是在 foreach 循环中呈现每个产品

如果启用 JS 并且使用 JQuery 异步调用 te 服务,我想防止这种情况发生。类似的东西

$(".product_list").SOMETHING(function(event) {
    event.preventDefault();
    ...
 });

我该怎么做?

【问题讨论】:

    标签: jquery asp.net-mvc-3 asynchronous progressive-enhancement


    【解决方案1】:

    试试这个:

    $(".product_list a").click(function(event) {
        event.preventDefault();
        // code to be executed.
     });
    

    编辑: 根据@kooshka 评论

    当 JS 被禁用时:

    <div class="product_list">
        <!-- Will execute when JS is disabled in browser -->
        <noscript>
            @Html.Action("GetProducts", "Products")
        </noscript>
    </div>
    

    当JS启用比脚本代码应该是:

    $(".product_list").SOMETHING(function(event) {
        event.preventDefault();
        $(".product_list").html('@Html.Action("GetProducts", "Products")');
        ...
    });
    

    祝你好运!!

    【讨论】:

    • 那里没有点击。这是一个渲染 PartialView 的 Action
    • @kooshka,你想在js中的特定条件下执行这个语句吗?
    • 唯一的条件是启用js。部分视图在服务器上呈现同步,我想防止这种情况,在没有该产品块的情况下加载页面并使用 jquery 异步加载它
    • @kooshka,我已经更新了我的答案。这是你要找的吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-09
    • 2011-07-21
    • 2012-07-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多