jquery抓取网页内容(Master()UI设计师)

优采云 发布时间: 2021-11-17 19:18

  jquery抓取网页内容(Master()UI设计师)

  我想要实现的是视图本身以某种方式检测到它是在JavaScript UI对话框中打开的,因此Form操作(最常用的简单提交按钮POST)将呈现为可以在UI之后的逻辑对话框,关闭UI对话框的动作已经执行。

  它现在的工作方式是 POST / Redirect / GET。该视图仍应支持这种简单模式,直接通过 Web 浏览器中的 URL 打开,但在通过 JavaScript 对话框打开时应提供一些额外的逻辑。

  希望你明白我的问题。任何帮助表示赞赏

  解决方案

  所以你需要的第一件事是一个新的 ViewEngine 来处理一个页面,没有所有正常的页眉/页脚的东西,这会阻碍你的模式窗口。最简单的方法是为您的模型状态窗口使用大部分空的母版页。你想要主页面切换逻辑和自定义的ViewEngine,否则每个控制器方法都必须有if()else() where IsAjaxRequest() 被检测到。我喜欢这样做,撒哈拉干。

  有了这个技巧,我也优雅的降级了。我的 网站 函数在没有 javascript 的情况下是完美的。链接很好,表单工作,零代码更改从“模态感知站点”到普通的旧 html 表单提交。

  我所做的是对默认引擎进行子类化并添加一些 MasterPage 选择位:

  查看引擎:

  public class ModalViewEngine : VirtualPathProviderViewEngine

{

public ModalViewEngine()

{

/* {0} = view name or master page name

* {1} = controller name */

MasterLocationFormats = new[] {

"~/Views/Shared/{0}.master"

};

ViewLocationFormats = new[] {

"~/Views/{1}/{0}.aspx","~/Views/Shared/{0}.aspx"

};

PartialViewLocationFormats = new[] {

"~/Views/{1}/{0}.ascx",};

}

protected override IView CreatePartialView(ControllerContext controllerContext,string partialPath)

{

throw new NotImplementedException();

}

protected override IView CreateView(ControllerContext controllerContext,string viewPath,string masterPath)

{

return new WebFormView(viewPath,masterPath );

}

public override ViewEngineResult FindView(ControllerContext controllerContext,string viewName,string masterName,bool useCache)

{

//you might have to customize this bit

if (controllerContext.HttpContext.Request.IsAjaxRequest())

return base.FindView(controllerContext,viewName,"Modal",useCache);

return base.FindView(controllerContext,"Site",useCache);

}

protected override bool FileExists(ControllerContext controllerContext,string virtualPath)

{

return base.FileExists(controllerContext,virtualPath);

}

}

  所以我的 Modal.Master 页面非常简单。我所拥有的只是一个 div 包装器,所以我知道在模态窗口中呈现了什么。当您需要仅在元素处于“模态”模式时使用 jquery 选择某些元素时,这将非常有用。

  模态大师

  下一步是创建您的表单。我使用默认属性名称 = 输入名称,因此我可以轻松地为绑定建模并保持简单。没有特殊形式。我看起来像你平时那样。(请注意,我在代码中使用了 MVC 2 和 EditorFor(),但这并不重要)这是我的最终 HTML:

  HTML 输出

  

EditFood

  除了模型绑定真的很好之外,您还可以使用 Jquery.Form 插件以最少的代码将您看似简单的 ajax 函数分层到您的应用程序中。现在我选择ColorBox作为我的模态窗口脚本纯粹是因为我想要Facebook的透明角落,我喜欢作者添加的扩展点。

  现在,结合这些脚本,您将获得一个非常好的组合,这使得这项技术在 javascript 中非常容易实现。我添加的唯一 javascript 是(在 document.ready 中):

  使用 JavaScript/jQuery

  $("a.edit").colorBox({ maxWidth: "800px",opacity: 0.4,initialWidth: 50,initialHeight: 50 });

$().bind('cBox_complete',function () {

$("#form form").ajaxForm(function () { $.fn.colorBox.close() });

});

  在这里,我告诉 ColorBox 为我的编辑链接(编辑食物)打开一个模式窗口。然后绑定到颜色框的完整事件以将您的ajaxform 内容与成功回调连接起来,告诉ColorBox 关闭模态窗口。就是这样。

  这段代码被用作概念证明,这就是为什么视图引擎真的很棒,没有验证或其他标准形式的 bling.ColorBox 和 JQuery.Form 有很多可扩展性支持,因此自定义它应该很容易。

  请注意,这一切都是在 MVC 2 中完成的,但这里是我的控制器代码,只是为了展示这有多简单。请记住,我的概念验证目标是使模态窗口无需任何代码修改即可工作,而不是设置一些基本基础设施。

  [UrlRoute(Path="edit/food")]

public ActionResult EditFood()

{

return View(new Food());

}

[HttpPost][UrlRoute(Path = "edit/food")]

public ActionResult EditFood(Food food)

{

return View(food);

}

  总结

  以上是本站为大家采集的jquery——简单的ASP.NET MVC CRUD视图打开/关闭JavaScript UI对话框中的所有内容,希望文章能帮助你解决jquery-简单的ASP.NET MVC在 JavaScript UI 对话框中打开/关闭视图时遇到的 CRUD 程序开发问题。

  如果您觉得本站网站的内容还不错,欢迎向程序员朋友推荐本站网站。

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线