1
我有一个路线ASP.NET MVC的URL路由和寻呼用的HtmlHelper
routes.MapRoute(
"AlphaPagedContacts", // Route name
"Contact/Alpha{alpha}", // URL with parameters
new { controller = "Contact", action = "AlphaList", alpha = UrlParameter.Optional },
new { alpha = @"\A-Z" } // Parameter defaults
);
我试图使URL的显示像
/Contact/AlphaA
/Contact/AlphaB
基于用户名联系人。然而,URL被显示为:http://localhost:54568/Contact/AlphaList?alpha=H
我的HtmlHelper是
@Html.AlphaLinks(new PagingModel { MaxPages = Model.MaxPages, CurrentLetter = Model.CurrentLetter, UrlGeneratorFunctionAlpha = i => Url.Action("AlphaList", new { alpha = i }) })
和我的实现是
public static MvcHtmlString AlphaLinks(this HtmlHelper helper, PagingModel model)
{
string[] letters = new string[] { "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z" };
var stringBuilder = new StringBuilder("<ul class='pager'>");
foreach (string letter in letters)
{
stringBuilder.Append(String.Format("<li {2}><a href='{1}'>{0}<a></li>", letter, model.UrlGeneratorFunctionAlpha(letter), letter == model.CurrentLetter ? "class=Selected" : String.Empty));
}
stringBuilder.Append("</ul>");
return MvcHtmlString.Create(stringBuilder.ToString());
}
我对ActionResult的控制器代码:
public ActionResult AlphaList(string alpha = "A")
{
var logic = new ContactBUS();
var pageSize = 10;
var usernames = from c in XDocument.Load(System.Web.HttpContext.Current.Server.MapPath("~/App_Data/Contacts.xml")).Elements("Contact")
select new
{
Username = (string)c.Element("Username"),
Lastname = (string)c.Element("LastName"),
Firstname = (string)c.Element("FirstName"),
Email = (string)c.Element("Email"),
};
var model = new AlphaListContactViewModel
{
Contacts = logic.GetContacts().Skip(0).Take(20).ToList(),
CurrentLetter = alpha,
MaxPages = (int)Math.Ceiling(logic.GetContactsCount()/(double)pageSize)
};
return View(model);
}
任何想法为什么发生这种情况? 此外,我需要做到这一点,以便当用户点击一个字母时,它显示该信件的联系人的用户名。 任何帮助将不胜感激。
我有另一条路线,但是在这之后 – multiv123
约束正则表达式可能吗?尝试@“[A-Z]” –
太好了。这解决了这个问题。现在我需要做到这一点,当用户点击该字母时,它会显示以该字母开头的用户名。我发布了我的控制器代码(参见上文)。 – multiv123