我jQuery.load()用来渲染局部视图.这部分看起来像这样:
$('#sizeAddHolder').load(
'/MyController/MyAction', function () { ... });
Run Code Online (Sandbox Code Playgroud)
我的控制器中的操作代码如下:
public ActionResult MyAction(byte id)
{
var model = new MyModel
{
ObjectProp1 = "Some text"
};
return View(model);
}
[HttpPost]
public ActionResult MyAction(byte id, FormCollection form)
{
// TODO: DB insert logic goes here
var result = ...;
return Json(result);
}
Run Code Online (Sandbox Code Playgroud)
我返回的部分视图看起来像这样:
<% using (Html.BeginForm("MyAction", "MyController")) {%>
<%= Html.ValidationSummary(true) %>
<h3>Create my object</h3>
<fieldset>
<legend>Fields</legend>
<div class="editor-label">
<%= Html.LabelFor(model => model.ObjectProp1) %>
</div>
<div class="editor-field">
<%= Html.TextBoxFor(model => model.Size.ObjectProp1) …Run Code Online (Sandbox Code Playgroud) 我想在网页上有一个TinyMCE textarea和pluplupload自定义文件上传器的实例.问题是在我的Firefox 3.6或谷歌浏览器中他们只是不能一起工作.我在这里用IE8检查它工作正常.我尝试了两个版本的TinyMCE - 标准和jQuery.
我尝试使用FireBug调试plupload的初始化(以便首先初始化tinymce)并开始工作.然后我尝试在调用初始化plupload时将setTimeout设置为2秒并再次起作用.
这是非常奇怪的行为.这只是我的问题还是有人遇到过同样的问题?
我使用jQuery 1.4.2,但我也检查了1.3.2 - 相同.这是我用来初始化这些库的javascript:
$(function() {
var plUploader = new plupload.Uploader({
runtimes: 'html5,flash,silverlight',
browse_button: 'pickfiles',
max_file_size: '10mb',
url: '<%= Url.Action<FilesController>(c => c.Upload()) %>',
resize: { width: 320, height: 240, quality: 90 },
flash_swf_url: '/js/plupload/plupload.flash.swf',
silverlight_xap_url: '/js//plupload/plupload.silverlight.xap',
filters: [
{ title: "Image files", extensions: "jpg,gif,png" },
{ title: "Zip files", extensions: "zip" }]
});
plUploader.bind('Init', function(up, params) {
$('#filelist').html("<div>Current runtime: " + params.runtime + "</div>");
});
plUploader.bind('FilesAdded', function(up, files) {
$.each(files, function(i, file) { …Run Code Online (Sandbox Code Playgroud) 我Html.RenderAction<CartController>(c => c.Show());在我的主页面上使用显示所有页面的购物车.问题是当我将一个项目添加到购物车然后点击浏览器后退按钮时.它显示旧购物车(来自Cache),直到我点击刷新按钮或导航到另一个页面.
我已经尝试了这个并且它完美地工作但是它为我的站点中的所有页面全局禁用了全局缓存(因为这个Action方法在主页面上使用).出于性能原因,我需要为其他几个部分视图(操作方法)启用缓存.
我不想在页面加载时使用带有AJAX的客户端脚本刷新购物车(和登录视图) - 但这是我现在能想到的唯一解决方案.
有谁知道更好吗?
我想为我的Web API创建一个全局的valdiation属性.所以我按照教程进行了操作,最后得到了以下属性:
public class ValidationActionFilter : ActionFilterAttribute
{
public override void OnActionExecuting(HttpActionContext actionContext)
{
if (actionContext.ModelState.IsValid)
{
return;
}
var errors = new List<KeyValuePair<string, string>>();
foreach (var key in actionContext.ModelState.Keys.Where(key =>
actionContext.ModelState[key].Errors.Any()))
{
errors.AddRange(actionContext.ModelState[key].Errors
.Select(er => new KeyValuePair<string, string>(key, er.ErrorMessage)));
}
actionContext.Response =
actionContext.Request.CreateResponse(HttpStatusCode.BadRequest, errors);
}
}
Run Code Online (Sandbox Code Playgroud)
然后我将它添加到Global.asax中的全局装配器:
configuration.Filters.Add(new ValidationActionFilter());
它适用于我的大多数操作,但与具有可选和可空请求参数的操作不一样.
例如:
我创建了一条路线:
routes.MapHttpRoute(
name: "Optional parameters route",
routeTemplate: "api/{controller}",
defaults: new { skip = UrlParameter.Optional, take = UrlParameter.Optional });
Run Code Online (Sandbox Code Playgroud)
我的一个动作ProductsController:
public HttpResponseMessage GetAllProducts(int? skip, int? …Run Code Online (Sandbox Code Playgroud) 我开始在ASP.NET MVC2中构建一个SaaS业务应用程序,但在开始之前,我想建立一个良好的架构基础.
我将采用共享数据库和共享模式方法,因为数据架构和业务逻辑将非常简单,效率和成本效益是关键问题.
为了确保租户之间良好的数据隔离,我想实现租户视图过滤器安全模式(请看这里).为此,我的应用程序必须根据登录到应用程序的用户模拟不同的租户(DB登录).登录过程需要尽可能简单(它不是企业级软件) - 因此客户只应输入他们的用户名和密码.
用户将通过自己的子域(使用子域路由)访问他们的数据,如http://tenant1.myapp.com或http://tenant2.myapp.com
满足此方案的最佳方法是什么?
我使用NuGet将ASP.NET Web API RC添加到我的MVC3项目中:
Install-Package AspNetWebApi
Run Code Online (Sandbox Code Playgroud)
然后我配置了它.在Global.asax.cs:
// configure regular controllers
var configuration = GlobalConfiguration.Configuration;
var container = Bootstrapper.ConfigureContainer(configuration);
containterProvider = new ContainerProvider(container);
DependencyResolver.SetResolver(new AutofacDependencyResolver(container));
// Set the dependency resolver implementation for Web API.
var resolver = new AutofacWebApiDependencyResolver(container);
configuration.DependencyResolver = resolver;
Run Code Online (Sandbox Code Playgroud)
在Boostrapper.ConfigureContainer(...)我补充说:
// I register my types as InstancePerLifetimeScope()
// but I also tried .InstancePerHttpRequest().InstancePerApiRequest()
// to the same end
builder.RegisterType<SomeService>()
.AsImplementedInterfaces().InstancePerLifetimeScope();
// Register API controllers using assembly scanning.
builder.RegisterApiControllers(Assembly.GetExecutingAssembly());
builder.RegisterWebApiFilterProvider(config);
Run Code Online (Sandbox Code Playgroud)
jquery ×2
asp.net ×1
asp.net-mvc ×1
autofac ×1
caching ×1
file-upload ×1
javascript ×1
multi-tenant ×1
outputcache ×1
saas ×1
security ×1
tinymce ×1
validation ×1