场景:
我正在使用MVC在Umbraco 6中建立一个站点 - 我对Umbraco来说相当新,但是到目前为止我已经通过遵循教程等完成了所有工作,并且在大多数情况下一切都很好.
所以我有一个"联系我们"表单,构建为部分视图,使用以下代码呈现:
@using (Html.BeginUmbracoForm("SendEmail", "ContactFormSurface"))
{
Run Code Online (Sandbox Code Playgroud)
发回我的ContactFormSurfaceController:
public class ContactFormSurfaceController : Umbraco.Web.Mvc.SurfaceController
{
[HttpPost]
public ActionResult SendEmail(ContactFormModel model)
{
Run Code Online (Sandbox Code Playgroud)
现在,我的ContactFormModel继承了Umbraco RenderModel,我在一个单独的ContactFormController中"劫持"了我的Contact Us视图的路径:
public class ContactFormController : RenderMvcController
{
//
// GET: /Contact-us/
public override ActionResult Index(RenderModel model)
{
var contactFormModel = new ContactFormModel(model);
return CurrentTemplate(contactFormModel);
}
Run Code Online (Sandbox Code Playgroud)
我希望这样,以便我可以根据Umbraco内容提供灵活的标题并在联系表单中提交按钮文本.我的ContactFormModel在其构造函数中采用RenderModel,以便它可以访问底层的Umbraco内容:
public class ContactFormModel : RenderModel
{
#region Ctr
public ContactFormModel(RenderModel model) : base(model.Content, model.CurrentCulture) {}
#endregion
#region Contact Form Fields
[Display(Name = "Your Name")]
[Required]
public string Name { …Run Code Online (Sandbox Code Playgroud) 我正在开发一些将小部件添加到客户网站的东西,我想异步加载我的js,以免阻止客户的页面加载.我一直在阅读很多有关此问题的主题,并且一直在尝试实现此处建议的模式,因为我的项目非常相似:
http://friendlybit.com/js/lazy-loading-asyncronous-javascript
我遇到的问题是我动态加载的javascript文件中的代码没有被执行.很抱歉,如果这似乎是一个重复的问题,但我花了几个小时搜索并尝试稍微不同的技术,我读过很多帖子,包括这些stackoverflow问题:
但是我仍然在努力做这项工作,所以我希望如果我直接问这个问题,有人可以帮助我!
我目前得到以下作为一个非常基本的测试; 很明显,我的真实剧本中还有很多内容,但我只需要了解这里发生的事情(或者事实上,未发生的事情).
所以在我的代码文件"test.js"中,我只需:
run_test = function () {
alert('hello from test');
};
Run Code Online (Sandbox Code Playgroud)
然后在我的页面上:
(function () {
load_test = function () {
var t = document.getElementsByTagName('script')[0];
var s = document.createElement('script');
s.type = 'text/javscript';
s.async = true;
s.src = 'test.js';
s.onload = s.readystatechange = function () {
if (run_test) run_test();
s.onload = null;
s.onreadystatechange = null;
};
t.parentNode.insertBefore(s, t);
};
load_test();
})();
Run Code Online (Sandbox Code Playgroud)
我已经尝试了几种变体 - 我已经尝试删除"s.async = true"只是为了看看它是否有所作为,但事实并非如此.我最初有以下代替"load_test();",正如我在上面提到的第一篇文章中所建议的那样:
window.attachEvent ? window.attachEvent('onload', load_test) : window.addEventListener('load', load_test, false); …Run Code Online (Sandbox Code Playgroud)