- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在 asp.net mvc 3 Razor 应用程序中使用 Tinymce。 Ajax.ActionLink 通过调用名为“GetContent”的 Controller 操作加载 tinymce 编辑器。 GetContent 方法从文件系统加载一个文本文件。一切都很好。但是,在我通过 $.ajax 调用保存 tinymce 文本后,Ajax.ActionLink 不再触发 Controller 方法。换句话说,$.ajax post 中的某些内容破坏了客户端上的 Ajax.ActionLink,因此它不再调用 GetContent Controller 操作。
有趣的是,Ajax.ActionLink 仍然加载 tinymce 编辑器,但是从浏览器缓存加载。在下面的示例中,我有 2 个链接“FileOne”和“FileTwo”,它们加载两个不同的文本文件。在我调用 $.ajax 之前,链接从磁盘加载文件。在我调用 $.ajax 之后,链接从浏览器缓存中加载最后一个“FileOne”或“FileTwo”。
这是 View 。 $.ajax post 出现在 tiny_mce_save_click() 函数中,它连接到 tinymce 保存按钮点击:
@model TestTinyMCE.Models.HomeModel
@{
ViewBag.Title = "Home Page";
}
@section JavaScript
{
<script src="@Url.Content("~/Scripts/tiny_mce/jquery.tinymce.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.min.js")" type="text/javascript"></script>
<script type="text/javascript">
$().ready(function () {
init_tiny_mce();
});
function init_tiny_mce() {
$('textarea.tinymce').tinymce({
// Location of TinyMCE script
script_url: '/Scripts/tiny_mce/tiny_mce.js',
//javascript function called when tinymce save button is clicked.
save_onsavecallback: "tiny_mce_save_click",
encoding: "xml",
theme: "advanced",
plugins: "save",
theme_advanced_buttons1: "save",
theme_advanced_toolbar_location: "top"
});
}
function tiny_mce_save_click(tinyMceInstance) {
$.ajax({
type: 'POST',
url: '/Home/SaveContent',
data: $('form').serialize(),
success: function (data, status, xml) {
$('#results').html(data);
},
error: function (xml, status, error) {
$('#results').html(error);
}
});
return false;
}
</script>
}
@using (Html.BeginForm())
{
<ul>
@foreach (string fileName in Model.FileList)
{
<li>@Ajax.ActionLink(fileName, "GetContent", new { FileName = fileName }, new AjaxOptions() { UpdateTargetId = "divContent" })</li>
}
</ul>
<div id="divContent">
@Html.Partial("GetContent", Model)
</div>
}
部分 View “GetContent”是:
@model TestTinyMCE.Models.HomeModel
@{
Layout = null;
}
<div id="divContent">
<fieldset id="fsContent">
<span id="results"></span><legend>Edit Content @Html.DisplayTextFor(m => m.FileName)</legend>
@Html.TextAreaFor(m => m.Content,
new Dictionary<string, object>{
{"class","tinymce"}, {"cols","80"}, {"rows","10"}}
)
@Html.HiddenFor(m => m.FileName)
</fieldset>
@if (@IsAjax)
{
<text>
<script type="text/javascript">init_tiny_mce();</script>
</text>
}
</div>
这是 Controller 。在 $.ajax post 发生后不再调用 GetContent 方法:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using TestTinyMCE.Models;
namespace TestTinyMCE.Controllers
{
public class HomeController : Controller
{
public ActionResult Index()
{
return View(new HomeModel());
}
public ActionResult GetContent(HomeModel homeModel)
{
if (!string.IsNullOrEmpty(homeModel.FileName))
{
string path = string.Format("~/App_Data/{0}.htm", homeModel.FileName);
string physicalPath = Server.MapPath(path);
if (!System.IO.File.Exists(physicalPath))
homeModel.Content = string.Format("The file '{0}' does not exist.", physicalPath);
else
homeModel.Content = System.IO.File.ReadAllText(physicalPath);
}
return View(homeModel);
}
[HttpPost]
[ValidateInput(false)]
public ActionResult SaveContent(HomeModel homeModel)
{
string path = string.Format("~/App_Data/{0}.htm", homeModel.FileName);
string physicalPath = Server.MapPath(path);
System.IO.File.WriteAllText(physicalPath, homeModel.Content);
ViewBag.Result = "The file was successfully saved.";
return View();
}
}
}
最佳答案
问题是浏览器缓存。要防止在 Ajax.ActionLink 上缓存,您必须添加 AjaxOption HttpMethod = "POST"。在上面的代码中,将 ActionLink 更改为
<li>@Ajax.ActionLink(fileName, "GetContent", new { FileName = fileName }, new AjaxOptions() { UpdateTargetId = "divContent", HttpMethod = "POST" })</li>.
关于ajax - mvc 3 razor 中的 tinymce,Ajax.ActionLinks 在第一次 ajax 调用后失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7282497/
I want to replace X with glyphicon-trash. 我正在使用 X 作为链接文本。这适用于删除项目。如何用字形替换。 这是我的代码 @Html.ActionLink(
我可以通过 Ajax.ActionLink("Getcustomers","GetCustomers","Customer") 调用 asp.net mvc Controller ; 我可以使用 Ht
假设我有一个用户列表: 用户/Index.cshtml @model IEnumerable @foreach (var user in Model) { @Html
我试图通过 POSTing 而不是 GETting 导航到 MVC 操作。 (该操作是 DELETE,我不希望它可以通过外部链接访问。) 我在由生成的网格中使用链接 Ajax.ActionLink(
Ajax.ActionLink("Link name",....) 可以用复选框代替“链接名称”吗? 如果是这样怎么办? 谢谢, 最佳答案 是的,当然这是可能的。您可以使用标准复选框: @Html.C
我想使用jquery调用actionlink,下面是代码: $("#paycheck").click(function () { if ($("#terms").attr("che
我有两条路线: routes.MapRoute( "route1", "{controller}/{action}/{param1}/{param2}/NotT
我正在使用 bootstrap 将我的元素放在正确的位置,当我尝试将它与来自 asp.net 的 actionlink 一起使用时,它不使用所有行,它只使用文本的大小,我想要使用所有行的元素,以便我可
这个问题在这里已经有了答案: How to use CSS on an Html.ActionLink in C# (2 个答案) 关闭 4 年前。
我想使用 jQuery 创建按钮效果,即 mouse_over、mouse_leave 和 mouse_click。我有使用 visual studio 2012 在 mvc 4 中的 ActionL
我在路由表中有一些预定义的 URL 实际上指向相同的 Controller 和操作,但语言不同。例如 routes.MapRoute( "Contact
我正在尝试创建一个 ActionLink 以从网格中导出数据。网格根据查询字符串中的值进行过滤。这是 url 的示例: http://www.mysite.com/GridPage?Column=Na
如问题所述,是否可以使用包含元素的 ActionLink,如果不能,实现它的最佳方法是什么? 例如,假设我有一个 Span 元素,我希望整个元素成为一个超链接...以下工作:
这是简单的 html: --%> 我想用它们制作 html.actionlink: 我想要没有文字的链接。它不起作用,第一个参数中不允许为 null。图像是正常的短。我如何在没有文本
我使用以下代码来实现排序: @Ajax.ActionLink("Name", "Cause", "Search", new { query = Model.Query, category =
全部, 掌握 ASP.NET MVC。到目前为止,一切都很好,但这个有点疯狂。 我有一个包含超链接属性字典的 View 模型,使用如下: 菜单 = 模型变量 Html.ActionLink(Html.
没有创建我自己的 ActionLink HtmlHelper 有没有办法强制任何 ActionLinks 呈现小写? 更新: 查看以下链接以扩展 RouteCollection 以添加 Lowecas
谁能解释为什么会发生以下情况?以及如何解决,Visual Studio 2010 和 MVC2 结果是 /Product/AddOption?class=lightbox 结果是 /Product
如何向这个@Html.ActionLink 添加一个类?我尝试了很多建议,但到目前为止都没有奏效。 @Html.ActionLink("Physicia
我在 ASP.NET-MVC 应用程序的 View 中使用 Ajax.ActionLink,并且我正在使用 InsertionMode.Replace,但我看到还有一个 ReplaceWith 选项。
我是一名优秀的程序员,十分优秀!