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中执行此操作的最佳方法是什么?