표시 오류 메시지에서 보기 컨트롤러 asp.net mvc5

나는 새로운 웹 개발하고 배우려고 노력 ASP.Net MVC5. 내가 찾는 하나의 레코드에 데이터베이스의 경우 레코드를 발견하고 싶어에 오류 메시지가 표시됩니다. 아래에 내려:

컨트롤러

    [HttpGet]
    public ActionResult Search()
    {
        return View();
    }

    [HttpPost]
    [ValidateAntiForgeryToken]
    public ActionResult Search(ForgotPasswordMV viewModel)
    {
        if (Temp.Check(viewModel.Email))
            return RedirectToAction("VerifyToken", new { query = viewModel.Email });
        else
        {
            ViewBag.ErrorMessage = "Email not found or matched";
            return View();
        }
    }

View:

<p>@ViewBag.ErrorMessage</p>

뷰 모델

public class ForgotPasswordMV
{
    [Display(Name = "Enter your email"), Required]
    public string Email { get; set; }
}

그러나 내가 어딘가에 읽는 나를 넣어야 하나의 시설에서 내 보기 모델 및 설정은 오류 메시지에 그 제공합니다. 내가 지금 이 혼란을 달성하는 방법,그리고를 표시하는 방법에는 오류를 볼때? 고 하나는 권장/최습니까?

해결책

그러나 내가 어딘가에 읽는 나를 넣어야 하나의 속성에 넣 모델 설정은 오류 메시지에 그 제공합니다. 내가 혼동하는 지금,하는 방법 달성하는 방법과 오류를 표시할 그? 는 중 권장/최습니까?

최고의 연습을 변경하는ModelState사전에 제공의 컨트롤러는 다음과 같다:

[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Search(ForgotPasswordMV viewModel)
{
    // ... 
    else
    {
        ModelState.AddModelError("Email", "Email not found or matched");
        return View(viewModel);
    }
}

다음 당신의보기에 줄을 추가합니다 아래 다음을 귀하의 이메일드;

@Html.ValidationMessageFor(m => m.Email)
해설 (8)

그러나 내가 어딘가에 읽는 나를 넣어야 하나의 시설에서 내 보기 모델 및 설정은 오류 메시지에 그 제공합니다.

는's 맞습니다. 을 추가할 수 있습하는 오류 메시지기 모델:

public class ForgotPasswordMV
{
    [Display(Name = "Enter your email"), Required]
    public string Email { get; set; }

    public string ErrorMessage { get; set; }
}

설정한 다음 이 숙박 시설에서 당신의보기 모델을 통과 모델을 볼 view:

...
else
{
    viewModel.ErrorMessage = "Email not found or matched";
    return View(viewModel);
}

마지막으로에서 강력한 형식의 뷰를 사용하여 호텔에서는 모델:

@model ForgotPasswordMV
...
<p>@Model.ErrorMessage</p>

그래서 여기에 기본적으로 우리는 우리를 교체하의 사용ViewBag과 함께 강력한 보기 모델입니다.

해설 (2)

나에게로 받아들여 적지 않은 가장 좋습니다. 우리는 모든 것을 처리할 수 있습니다에서 오류가 주석이 있습니다. 에서 우리의 뷰 모델 우리가 지정한`오류 메시지를 위해 우리의 properites.

public class UserLoginViewModel
{
    [Required(ErrorMessage = "User name is required")]
    [Display(Name = "User name")]
    [StringLength(500, ErrorMessage = "User name is too short", MinimumLength = 3)]
    public string Login { get; set; }

    [Required(ErrorMessage = "Password is required")]
    [Display(Name = "Password")]
    public string Password { get; set; }
}

에 우리의 컨트롤러

[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Login(UserLoginViewModel model)
{
    if (!this.ModelState.IsValid)
    {
        return this.View();
    }
    ...
}

와 우리의 보기

@Html.ValidationMessageFor(model => model.Login)
@Html.EditorFor(model => model.Login)
@Html.ValidationMessageFor(model => model.Password)
@Html.EditorFor(model => model.Password)
해설 (2)

면 찾는 사람을 위한 간단한 수정하고 아무것도 영원한 것보다 이것을 사용하여 주시기 바랍에 대답이 나를 도왔다. 를 사용하지 않는 이 해결해야하는 경우에 대해 걱정하 보안 응용 프로그램입니다.

에서 컨트롤러:

TempData["Message"] = "This is my Error";

에 오류가 있습니다.cshtml file:

<h3><strong>@TempData["Message"]</strong></h3>

결과:

해설 (0)