Question: I have a HomeController with an Index.cshtml Razor view that uses an InitialChoicesViewModel with validation attributes. The Index view contains the following form:

```
@using (Html.BeginForm("CreateCharacter", "DistributePoints", FormMethod.Get))

```

This goes to a different controller (which is what I want):

```cs
public class DistributePointsController : Controller
{
    public ActionResult CreateCharacter(/* my form parameters */)
    // ...
}

```

How do I perform server-side validation on the form (such as checking `ModelState.IsValid`), returning my original Index view with a correct `ValidationSummary` on error? (On success I want to return the CreateCharacter view of the other controller.)

---

Based on John H's answer, I resolved this as follows:

```
@using (Html.BeginForm("CreateCharacter", "Home"))

```

HomeController:

```cs
[HttpPost]
// Only some of the model fields are posted, along with an additional name field.
public ActionResult CreateCharacter(InitialChoicesViewModel model, string name)
{
    if (ModelState.IsValid)
    {
        return RedirectToAction("CreateCharacter", "DistributePoints",
        new {name, model.Level, model.UseAdvancedPointSystem});
    }

    // Unsure how to post a collection - easier to reload from repository.
    model.ListOfStuff = _repository.GetAll().ToList();

    return View("Index", model);
}

```

I had to add a parameterless constructor to my view model, too.

Answer: 
```
[HttpPost]
public ActionResult CreateCharacter(InitialChoicesViewModel model)
{
    if (ModelState.IsValid)
        return RedirectToAction("SomeSuccessfulaction");

    return View("~/Views/Home/Index.cshtml", model);
}

```

The `~/` denotes the relative root of your site.

The code above complies with the [Post-Redirect-Get](http://en.wikipedia.org/wiki/Post/Redirect/Get "Post-Redirect-Get") pattern, in order to prevent some types of duplicate form submission problems. It does that by redirecting to a separate action when the form submission is successful, and by returning the current view, complete with `ModelState` information, on error.
By default, ASP.NET MVC checks first in `\Views\[Controller_Dir]\`, but after that, if it doesn't find the view, it checks in `\Views\Shared`.
If you do return `View("~/Views/Wherever/SomeDir/MyView.aspx")` You can return any View you'd like.

But for now in your case, try the following

```
public ActionResult CreateCharacter(SomeModel model)
{
if(!ModelState.IsValid){
 return View("~/Views/Home/Index.cshtml", model )
}
return View();
}

```