我创建了一个自定义验证属性:
public class FutureDateAttribute : ValidationAttribute
{
public override bool IsValid(object value)
{
if (value == null|| (DateTime)value < DateTime.Now)
return false;
return true;
}
}
Run Code Online (Sandbox Code Playgroud)
如何使用jquery在客户端使用它?
我最近在我的项目中添加了Glimpse Debugger包.这增加了对Glimpse dll的引用,并修改了一些Web.Config.
我在开发和生产环境中尽可能地喜欢我的项目.
那么将Glimpse部署到我的生产站点是节省/明智的,还是应该创建一个不同的项目(或者从我的csproj文件创建分支)以仅在本地保存它?
我担心的东西包括:
我有以下viewmodel定义
public class AccessRequestViewModel
{
public Request Request { get; private set; }
public SelectList Buildings { get; private set; }
public List<Person> Persons { get; private set; }
}
Run Code Online (Sandbox Code Playgroud)
所以在我的应用程序中,访问请求必须至少有一个人.您可以使用什么方法进行验证?我不希望在我的控制器中进行这种验证,这很简单.是自定义验证属性的唯一选择吗?
编辑:目前正在使用FluentValidation执行此验证(漂亮的库!)
RuleFor(vm => vm.Persons)
.Must((vm, person) => person.Count > 0)
.WithMessage("At least one person is required");
Run Code Online (Sandbox Code Playgroud) 如果问题不明确.我在一个解决方案中有3个MVC项目.每次我创建一个新项目时,它都会添加"Scripts"文件夹,其中包含我需要的所有.js文件.我不想每次都为每个应用程序创建这个.有没有办法从解决方案中的中央文件夹引用脚本,以便所有应用程序/项目可以共享一个公共脚本文件夹,其中包含所有常见脚本?
编辑: 如果有任何问题,请解释这样做的利弊...现在我很好奇.
或者,我是否应该问,VS代码格式何时适用于Razor标记?格式化适用于大多数结构,但它似乎阻塞'if'块.下面的代码是由VS格式化的.修复这种情况非常容易,还有一个缩进,但我很好地接受了日常使用中的格式,并且喜欢经常使用它来代替我的大部分代码,所以我宁愿避免手动格式化.现在我只是把它作为VS格式化它.
@{
if (User.Identity.IsAuthenticated)
{
<text>Hello </text>
@Html.Display("@ViewBag.UserName") <text> - </text>
@Html.ActionLink("Sign Out", "LogOff", "Account", null, new { style = "font-weight: bold;" })
}
}
Run Code Online (Sandbox Code Playgroud)
我认为这对于可读性很重要,例如在上面,if块的主体是缩进的,除了看起来更好.
asp.net-mvc visual-studio-2010 visual-studio razor asp.net-mvc-3
这部分观点让我很困惑......
我想在主视图中加载局部视图...
这是简单的例子......
我正在加载Homecontroller Index操作的Index.cshtml作为主页面.
在index.cshtml我正在创建一个链接
@Html.ActionLink("load partial view","Load","Home")
Run Code Online (Sandbox Code Playgroud)
在HomeController中我添加了一个名为的新Action
public PartialViewResult Load()
{
return PartialView("_LoadView");
}
Run Code Online (Sandbox Code Playgroud)
在_LoadView.cshmtl我只是有一个
<div>
Welcome !!
</div>
Run Code Online (Sandbox Code Playgroud)
但是,当运行项目时,index.cshtml首先渲染并向我显示链接"加载部分视图"...当我点击它时,它转到新页面instade,将欢迎消息从_LoadView.cshtml呈现到index.cshtml .
有什么不对?
注意:我不想通过AJAX加载页面或者不想使用Ajax.ActionLink
这可能是一个虚拟问题,但我找不到明确的指示.我在MVC3 Web应用程序中有一个POCO类,其唯一目的是管理服务器中某些文件的备份.通常,它会创建一个备份并将文件名返回给控制器,控制器会发送一封电子邮件,其中包含用于下载它的URL.这工作正常,但我无法构建要发送的绝对URL.无论我使用哪种功能,我总是得到一个相对的URL,比如/Backup/TheFile.zip,而不是http://www.somesite.com/Backup/TheFile.zip.我试过了:
VirtualPathUtility.ToAbsolute("~/Backup/SomeFile.zip");
HttpRuntime.AppDomainAppVirtualPath + "/Backup/SomeFile.zip";
Url.Content("~/Backup/SomeFile.zip");
Run Code Online (Sandbox Code Playgroud)
但它们都返回类似/Backup/SomeFile.zip的东西.任何的想法?
我有一个ASP.Net MVC 3 Web应用程序,我正在使用HtmlHelper类向视图页面添加一个复选框,就像这样......
@Html.CheckBox("CheckBox1", true, new { @class = "Class1" })
Run Code Online (Sandbox Code Playgroud)
我想要做的是根据视图状态属性有条件地添加disabled属性.基本上以下是理想的......
@Html.CheckBox("CheckBox1", true, new { @class = "Class1", @disabled = Model.ReadOnly })
Run Code Online (Sandbox Code Playgroud)
遗憾的是,由于disabled属性的性质,这将不起作用,因为分配给disabled属性的任何值(甚至"false")都将转换为true.
我已经想到了一些解决这个问题的解决方案,所以问题不是我怎么能这样做.但是,有一种简单的方法,如上面所需的方法?或者我是否必须诉诸以下其中一项?
我知道我能做什么......
创建一个if/else语句并写入不同的Html.CheckBox行(对于可读性而言不是很好 - 并且可能会抛出标记警告 - 不确定)
跳过HtmlHelper类并手写标记以允许更好的条件属性(保持代码更短,但增加了不一致性)
创建一个自定义帮助程序,它采用"禁用"参数(最干净的解决方案,但需要不需要的额外方法 - 可能是目前为止最好的选择)
function (data) {
//add values based on activity type
//data = JSON.parse(data);
//alert(abc.Phone1);
alert(data.myName)
alert(data.toString());
if (activityType == "Phone") {
}
return;
},
Run Code Online (Sandbox Code Playgroud)
正如您可以看到从控制器$.ajax获取JSON数据的回调函数.
例如:
[{"name":"myName" ,"address": "myAddress" }]
在这种情况下,我的第一个警报给我未定义和第二/第三个警报弹出窗口提出:
[{"name":"myName" ,"address": "myAddress" }]
如何通过名称访问值,以便我的第一个警报填写的myName值是name什么?
如何在Razor语法中加入两个字符串?
如果我有:@Model.address并且@Model.city我希望我的出局是address city什么?这么简单@Model.address + " " + @Model.city吗?
asp.net-mvc-3 ×10
asp.net-mvc ×7
razor ×4
c# ×2
jquery ×2
ajax ×1
asp.net ×1
glimpse ×1
html-helper ×1
json ×1
validation ×1