jQuery Validation使验证电子邮件地址变得简单:
$("someForm").validate({
rules: {
SomeField: {
required: true,
email: true,
remote: {
type: "POST",
url: "CheckEmail"
}
}
}
});
Run Code Online (Sandbox Code Playgroud)
这使得SomeField成为必需,必须格式化为电子邮件地址,并且还执行对CheckEmail操作的远程调用(检查重复项).
我喜欢让事情变得尽可能简单,所以我可以用Data Annotations做很多相同的事情:
public class RegisterModel {
[Required]
[Remote("CheckEmail", "Home", HttpMethod="POST")]
public string SomeField { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
ASP.net MVC 3/Data Annotations是否有内置/简单的方法来验证以确保电子邮件地址的格式正确?
如果可能的话,我希望它能产生不引人注目的javascript.
c# unobtrusive-javascript data-annotations unobtrusive-validation asp.net-mvc-3
在我的MVC应用程序中,我有几个不同的角色:管理员,普通用户等等.
我知道我可以通过Authorize属性将安全性应用于我的控制器:
[Authorize(Roles="Admin")]
public ActionResult Create()
{
return View();
}
Run Code Online (Sandbox Code Playgroud)
但我还需要对视图应用一些安全性,以便不将View的某些部分显示给某些角色:
@if( User.IsInRole("Admin") )
{
@Html.ActionLink("Create", "Create")
}
Run Code Online (Sandbox Code Playgroud)
以上述方式执行此操作是否更好,或者在ViewModel中处理此类安全性:
public ActionResult Index()
{
var model = new IndexViewModel();
model.CanCreate = User.IsInRole("Admin");
return View(model);
}
View:
@( Model.CanCreate )
{
@Html.ActionLink("Create", "Create")
}
Run Code Online (Sandbox Code Playgroud)
第二种方法与第一种方法相比是否有任何好处,还是只是偏好?
我创建了一个页面路由,因此我可以将我的MVC应用程序与我项目中存在的一些WebForms页面集成:
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
// register the report routes
routes.MapPageRoute("ReportTest",
"reports/test",
"~/WebForms/Test.aspx"
);
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
}
Run Code Online (Sandbox Code Playgroud)
每当我在视图中使用Html.ActionLink时,这就产生了一个问题:
<%: Html.ActionLink("Home", "Index", "Home") %>
Run Code Online (Sandbox Code Playgroud)
当我在浏览器中加载页面时,链接显示如下:
http://localhost:12345/reports/test?action=Index&controller=Home
Run Code Online (Sandbox Code Playgroud)
有没有人遇到过这个?我怎样才能解决这个问题?
我想在C#中创建一个正则表达式,如果重复它就删除一个特定字符,因此它不是字符串的最后一个字符.
例:
"a--b-c-" => "a-b-c"
"-a-b--c" => "a-b-c"
"--a--b--c--" => "a-b-c"
Run Code Online (Sandbox Code Playgroud)
我从不想要 - 重复,我从不希望它成为我的字符串的第一个或最后一个字符.我怎么能写一个正则表达式来做这个?
我有一个问题,我将如何在我的数据库中设计几个表.我有一个表来跟踪类别,一个用于子类别:
TABLE Category
CategoryID INT
Description NVARCHAR(500)
TABLE Subcategory
SubcategoryID INT
CategoryID INT
Description NVARCHAR(500)
Run Code Online (Sandbox Code Playgroud)
类别可能类似于电子产品,其子类别可能是DVD播放器,电视等.
我有另一个表将引用Category/Subcategory.是否需要引用SubcategoryID?
TABLE Product
SubcategoryID INT -- should this be subcategory?
Run Code Online (Sandbox Code Playgroud)
有没有更好的方法来做到这一点,还是这是正确的方法?我不是一个数据库设计人员.如果重要的话,我正在使用SQL Server 2008 R2.
我有以下源类型:
public class Source
{
public string FirstName { get; set; }
public string LastName { get; set; }
public string Address1 { get; set; }
public string Address2 { get; set; }
public string City { get; set; }
public string State { get; set; }
public string ZipCode { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我有以下目的地类型:
public class Destination
{
public string FirstName { get; set; }
public string LastName { get; set; }
public Address HomeAddress { get; set; …Run Code Online (Sandbox Code Playgroud) 0项目
在我看来,我有一个隐藏的文件,有一个UserID.该用户ID是在动作时生成的(因此事先不知道)
一旦这个隐藏字段有一个值,我想将该值用作actionlink routevalue.我可以使用jquery选择器来完成它.
我隐藏的领域是
<input id="NewUserID" type="hidden" value="80">
Run Code Online (Sandbox Code Playgroud)
我的ajax.ActionLink是
@Ajax.ActionLink("Edit", "EditUser", "User", new { UserID = "$('#GetNewPatientID').val()" },
new AjaxOptions
{
OnSuccess = "ShowEditUserForm",
UpdateTargetId = "EditUserDetails",
InsertionMode = InsertionMode.Replace,
HttpMethod = "Get"
}, new { @class = "button", id = "EditUserButton" })
Run Code Online (Sandbox Code Playgroud)
知道这是否可行?
在Jquery中,我需要告诉程序转到EmployeeController和Empl动作.我怎么告诉它这样做.我想以简单的方式在不使用ajax的情况下执行此操作.
我有一些代码可以使用Azure Key Vault进行身份验证,以便检索一些秘密.我使用客户端ID和证书而不是客户端ID和密码进行身份验证.此代码在普通的控制台应用程序中运行良好:
var store = new X509Store(StoreName.My, StoreLocation.CurrentUser);
try
{
store.Open(OpenFlags.ReadOnly);
var matchingCertificates = store.Certificates.Find(X509FindType.FindByThumbprint, thumbprint, false);
if (matchingCertificates.Count != 1)
{
return null;
}
return matchingCertificates[0];
}
finally
{
if (store != null) store.Close();
}
Run Code Online (Sandbox Code Playgroud)
只要我在有状态服务应用程序中尝试使用此代码,它就再也无法找到证书.
如何安装证书以使其可用于我的本地群集?
创建新的MVC项目时,它会使用以下标记创建Site.master:
<div id="menucontainer">
<ul id="menu">
<li><%: Html.ActionLink("Home", "Index", "Home")%></li>
<li><%: Html.ActionLink("About", "About", "Home")%></li>
</ul>
</div>
Run Code Online (Sandbox Code Playgroud)
我想在这里放置代码,如果我在该页面上,将突出显示当前链接.
如果我添加另一个链接,例如:
<li><%: Html.ActionLink("Products", "Index", "Products")%></li>
Run Code Online (Sandbox Code Playgroud)
如果我在Products控制器中执行任何操作,我希望Products链接处于活动状态(使用类似.active的css类).
如果我在HomeController About操作上,那么About链接应该是活动的.如果我在HomeController的Index操作上,Home链接应该是活动的.
在MVC中执行此操作的最佳方法是什么?