У меня есть один вопрос, я уверен, что кто-то здесь точно знает ответ.
Я пытаюсь выполнить проверку на стороне сервера для текстового поля на веб-сайте MVC. Вот что у меня есть:
<% using (Html.BeginForm("WebsiteLinks", "Home", FormMethod.Get))
{%>
<%: Html.ValidationSummary("Please enter valid URL and try again.") %>
<fieldset>
<p>
<%=Html.Label("Please enter URL:") %>
<%=Html.TextBox("url")%>
<%= Html.ValidationMessage("url", "*") %>
<input type="submit" value="Crawl" />
</p>
</fieldset>
<% } %>
А в контроллере у меня так:
public ActionResult WebsiteLinks(string url)
{
if (Regex.IsMatch(url, @"http(s)?://([\w-]+\.)+[\w-]+(/[\w- ./?%&=]*)?"))
{
ViewData["AnchorText"] = url;
return View(new Website(url, "Url"));
}
return RedirectToAction("Index");
}
Проверка работает нормально, но я хочу добиться того, что если данные недействительны, если данные не являются правильным URL-адресом, я хочу перенаправить на ту же страницу по умолчанию с сообщением, вероятно, здесь: <%= Html.ValidationMessage("url", "*") %>
, но я не знаю как это сделать. Заранее спасибо, Лациале.
Редактировать:
После того, как я сделал все рекомендованные вами изменения, я получаю ошибку в шапке страницы просмотра. У меня есть Inherits="ViewPageBase", где Home — это имя класса, Home.cs в папке Models. В файле home.cs у меня есть это:
namespace LAX.Models
{
public class UrlModel
{
[Required]
[DisplayName("Please enter URL:")]
[RegularExpression(@"http(s)?://([\w-]+\.)+[\w-]+(/[\w- ./?%&=]*)?")]
public string Url { get; set; }
}
}
в контроллере у меня:
[HttpPost]
public ActionResult WebsiteLinks(UrlModel model)
{
/*
if (Regex.IsMatch(url, @"http(s)?://([\w-]+\.)+[\w-]+(/[\w- ./?%&=]*)?"))
{
ViewData["AnchorText"] = url;
return View(new Website(url, "Url"));
}
else
{
ModelState.AddModelError("url", "Error URL Format");
}
return RedirectToAction("Index");
*/
if (ModelState.IsValid)
{
ViewData["AnchorText"] = model.Url;
return View(new Website(model.Url, "Url"));
}
return RedirectToAction("Index");
}
и в представлении у меня есть:
<% using (Html.BeginForm("WebsiteLinks", "Home", FormMethod.Get))
{%>
<%: Html.ValidationSummary("Please enter valid URL and try again.") %>
<fieldset>
<p>
<%=Html.LabelFor(m => m.Url) %>
<%=Html.TextBoxFor(m => m.Url) %>
<%=Html.ValidationMessageFor(m => m.Url) %>
<input type="submit" value="Crawl" />
</p>
</fieldset>
<% } %>
Вот ошибка: «Не удалось найти имя типа или пространства имен« Home »(вам не хватает директивы использования или ссылки на сборку?)»
Есть идеи, что мне не хватает? Спасибо, Лациале.
HomeController
? - person hunter   schedule 09.09.2011