我知道之前已经问过这个问题,但我似乎遇到的问题与之前提出的问题不同.我有一个表,我希望每一行都有一个删除链接,淡出表行,然后从DOM中删除表行.我的第一个问题是我无法获得jQuery fadeOut效果来处理表行,并发现你必须在行的td元素上调用fadeOut.所以,这是我的jJavascript:
$('span.deleteItem').live('click', function() {
$(this).closest('tr').find('td').fadeOut('fast',
function(){
$(this).parents('tr:first').remove();
});
return false;
});
Run Code Online (Sandbox Code Playgroud)
span元素位于td内部,因此我在单击时找到最接近的tr元素,然后在每个td元素上放置fadeOut函数.这非常有效.
问题是在回调函数中,'this'实际上是引用窗口元素而不是隐藏的单个td元素.根据我的理解,'this'应该引用淡出的元素.
有任何想法吗?
向ASP.NET MVC项目添加新视图时,可以通过在对话框中选择应使用的模型类来强烈键入视图.问题出在下拉菜单中,它包含了所有引用项目和dll的所有类和接口.所以,我在该菜单中看到了所有Ninject类,我服务的所有接口等.有没有办法指定要包含的名称空间或要从该下拉菜单中排除的名称空间列表?
我意识到这不是什么大问题,你可以在框中输入类的名称,它会拉出正确的名称.我只是觉得,如果有一个地方,那就太好了.如果没有,没什么大不了但我想我会问.:)
我通过复制ASP.NET MVC 3 CompareAttribute创建了一个自定义CompareLessThan验证属性,而不是检查是否相等,我检查一个属性是否小于另一个属性.如果存在客户端错误,则向用户显示消息"{0}必须小于{1}".
我的模型设置如下,Display属性引用资源文件.
[CompareLessThan("AmountAvailable", ErrorMessageResourceName="CompareLessThan", ErrorMessageResourceType = typeof(Resources.ValidationMessages))]
[Display(Name = "Amount", ResourceType = typeof(Resources.Labels))]
public decimal Amount { get; set; }
[Display(Name = "AmountAvailable", ResourceType = typeof(Resources.Labels))]
public decimal AmountAvailable { get; set; }
Run Code Online (Sandbox Code Playgroud)
然后自定义验证GetClientValidationRules方法与CompareAttribute完全相同
public IEnumerable<ModelClientValidationRule> GetClientValidationRules(ModelMetadata metadata, ControllerContext context)
{
yield return new ModelClientValidationLessThanRule(FormatErrorMessage(metadata.DisplayName), FormatPropertyForClientValidation(OtherProperty), this.AllowEquality);
}
Run Code Online (Sandbox Code Playgroud)
在这里,我们生成错误消息,如果出现问题,将显示给用户.我可以从资源文件中获取使用我的自定义CompareLessThan属性修饰的属性的显示名称,但我的问题是如何获取我们正在比较的"其他"属性的显示名称?在IsValid方法中,我们引用了validationContext,我可以从中为'other'属性生成PropertyInfo对象,我想获取显示名称.但是,在GetClientValidationRules中,我没有访问权限.
我总是可以为另一个属性的显示名称传递另一个值,但我希望有一种方法可以派生它,因为我已经用数据注释指定它.
有任何想法吗?
validation asp.net-mvc client-side-validation validationattribute
我有一个带有DateTime属性的模型,它在一个地方放置在一个隐藏的输入字段中.
@Html.HiddenFor(m => m.StartDate)
Run Code Online (Sandbox Code Playgroud)
这会生成以下HTML:
<input id="StartDate" name="StartDate" type="hidden" value="1/1/2011 12:00:00 AM" >
Run Code Online (Sandbox Code Playgroud)
问题是时间包含在值中,我的自定义日期验证需要格式为##/##/####的日期,从而导致验证失败.我可以轻松地更改我的自定义日期验证,以使这种情况工作,但我宁愿这样做,以便隐藏字段将值放在正确的格式.
我已尝试在模型属性上使用DisplayFormat属性,但似乎不会更改隐藏输入的格式.
我确实意识到我可以手动创建隐藏的输入并为该值调用StartDate.ToString("MM/dd/yyyy"),但我也在动态生成的项目列表中使用此模型,因此输入被索引并具有像Collection [Some-Guid] .StartDate这样的ID会让你更难以找出输入的id和名称.
无论如何,当将页面上的字段渲染为隐藏输入时,是否以特定格式显示"值"值?
我有一个使用Ninject v2.2.1.4的ASP.NET MVC 3应用程序.一切都很好,然后突然我们开始看到Ninject尝试使用带有无参数构造函数的参数的构造函数创建我们的DbContext.这是绑定:
kernel.Bind<MyContext>().ToSelf().InRequestScope();
kernel.Bind<IUnitOfWork>().ToMethod(ctx => ctx.Kernel.Get<MyContext>());
kernel.Bind<DbContext>().ToMethod(ctx => ctx.Kernel.Get<MyContext>());
Run Code Online (Sandbox Code Playgroud)
MyContext是一个DbContext对象,它也实现了IUnitOfWork接口.我已经这样设置了,因此将相同的上下文注入到单个请求中使用的多个存储库中.MyContext构造函数如下所示:
public MyContext() { }
public MyContext(string connectionString) { }
public MyContext (long accountID) { }
public MyContext (Connection connection) { }
Run Code Online (Sandbox Code Playgroud)
不同的应用程序有不同的构造函数,因为它们都使用相同的MyContext类.查看绑定时,您会想到当请求MyContext类时将调用无参数构造函数,但无论出于何种原因,它都不会.即使没有指定accountID,也会调用具有long accountID参数的那个.这显然是throwns和exception语句,"没有匹配的绑定可用,并且类型不可自绑定"它实际上在尝试生成IUnitOfWork时抛出异常.
如果我注释掉最后三个构造函数,一切正常,并使用无参数构造函数.如果我注释掉任何两个参数化构造函数,它会尝试使用另一个而不是无参数构造函数.
Ninject提供的建议是:
Suggestions:
1) Ensure that you have defined a binding for long.
2) If the binding was defined in a module, ensure that the module has been loaded into the kernel.
3) Ensure you have not accidentally created more than one kernel.
4) If …Run Code Online (Sandbox Code Playgroud) 在我的应用程序(ASP.NET MVC 3)中,我有一个BaseController类,我的所有控制器继承,并且在该BaseController中我重写了OnActionExecuting方法以检查以确保填充了Session变量,因为我需要访问所有其他操作方法中的那个在申请中.我还有一个我定义的自定义Authorize属性,它扩展了AuthorizeAttributeClass.在该属性中,我重写OnAuthorization以检查我在BaseController OnActionExecuting方法中加载的相同Session变量,以查看是否应该允许用户继续.
BaseController
public class BaseController : Controller
{
private ISessionUserService sessionUserService;
public BaseController(ISessionUserService sessionUserService)
{
this.sessionUserService = sessionUserService;
}
protected override void OnActionExecuting(ActionExecutingContext filterContext)
{
base.OnActionExecuting(filterContext);
if (User != null && User.Identity.IsAuthenticated && this.sessionUserService.Current == null)
{
this.sessionUserService.Start(accountID, User.Identity.Name);
// If we weren't successful in reloading the SessionUser
// variable, redirect the user to the Sign In view
if (this.sessionUserService.Current == null)
{
filterContext.Result = new RedirectResult(Url.Action("SignIn", "Access", new { area = string.Empty }));
return;
}
} …Run Code Online (Sandbox Code Playgroud) c# asp.net-mvc authorization authorize-attribute actionfilterattribute
我正在显示一个jQuery UI对话框窗口,其中包含一个jQuery UI datepicker控件.问题是对话框窗口中的第一个表单字段是日期选择器,因此它在窗口打开时获得焦点,这反过来导致日期选择器窗口自动打开.我不希望这种情况发生.
我试过打电话
$('#Date').datepicker('hide')
Run Code Online (Sandbox Code Playgroud)
然后打开对话框窗口的功能,并且在使对话框打开的代码之后但是当它到达代码时它不起作用,则datepicker窗口尚未打开.
如何在对话框窗口显示时打开日期选择器窗口但在用户单击输入时仍然打开它?
我有以下类结构:
public class Fruit { }
public class Apple : Fruit { }
Run Code Online (Sandbox Code Playgroud)
然后我使用.net框架中的一个方法,该方法从作为对象返回的类中获取属性值.所以,
// values will be of type List<Apple>
object values = someObject.GetValue()
Run Code Online (Sandbox Code Playgroud)
我现在有了List类型的这个值对象,我想将它转换为类型为Fruit的List.我试过以下但是没有用.
List<Fruit> fruits = values as List<Fruit>;
Run Code Online (Sandbox Code Playgroud)
任何人都知道如何将对象转换为其基类的List?
更新:在转换时我不知道值对象是List类型我知道它应该是一个继承自Fruit的类型的List.
我尝试在 Azure Web 角色启动时执行以下命令来设置回收应用程序池的特定时间:
%windir%\system32\inetsrv\appcmd set config -section:applicationPools -applicationPoolDefaults.recycling.periodicRestart.schedule.[value='00:08:00']
Run Code Online (Sandbox Code Playgroud)
但是当我这样做时,我收到错误:
ERROR ( messsage:Cannot find requested collection element. )
Run Code Online (Sandbox Code Playgroud)
有人知道如何使用 appcmd 设置默认应用程序池设置以使其在 UTC 上午 8:00 回收吗?请注意,应用程序池回收的特定时间的集合最初是空的。
我们与少数开发人员一起安装了TFS 2010标准版.我们确实有许多项目,其中包括许多分支机构,但没什么可疯狂的.我们经常会去获取最新版本的解决方案,TFS将删除其中一个项目的项目文件(csproj),一个MVC 3 Web项目.查看源代码管理日志,我们看到以下错误:
One or more source control bindings for this solution are not valid and are listed below.
Source control bindings can be modified by selecting File, Source Control, Change Source Control from the main menu.
Run Code Online (Sandbox Code Playgroud)
如果我们进入挂起的更改视图并撤消删除项目文件,一切正常.有谁知道错误信息意味着什么,知道我们正在做什么导致它?
环境:TFS 2010 VS 2012 SQL Server 2008
version-control tfs visual-studio tfs2010 visual-studio-2012
asp.net-mvc ×4
c# ×2
jquery ×2
azure ×1
base-class ×1
casting ×1
datepicker ×1
dialog ×1
fadeout ×1
hide ×1
html ×1
html-table ×1
iis ×1
jquery-ui ×1
ninject ×1
tfs ×1
tfs2010 ×1
validation ×1