Jay Sun
Jay Sun

Reputation: 1601

Controller searching for view instead of returning a different view method

I have two controller actions outlined below:

public ViewResult TitleStorylines(int id)
    {
        var vm = Service.Get(id);
        vm.IsEditable = User.HasPermission(SecurityPermissionType.ManageStorylines);
        return View(vm);
    }

public ViewResult TitleStorylinesCreate(TitleStorylineModel model)
    {
        var created = Service.Create(model);
        return TitleStorylines(created.TitleId);
    }

I only have one view in my project, called TitleStorylines, which the first controller action handles fine. But when I call the second method, it gives me an error saying that it can't find the view called TitleStorylinesCreate even though I'm explicitly calling the previous method. What gives?

Upvotes: 0

Views: 99

Answers (2)

dev85
dev85

Reputation: 637

        public ActionResult TitleStorylinesCreate(TitleStorylineModel model)
{
    var created = Service.Create(model);
    return RedirectToAction("TitleStorylines",new { @id=created.TitleId});
}

Upvotes: 0

Shyju
Shyju

Reputation: 218872

Did you try ?

return View("TitleStorylines",created.TitleId);

EDIT: Based on your update : I guess you are posting your form back the TitleStorylinesCreate. So probably after saving, dont you want to redirect the user back to the Get action of same ?

[HttpPost]
public ViewResult TitleStorylinesCreate(TitleStorylineModel model)
{
    var created = Service.Create(model);
    return RedirectToAction("TitleStorylines",new { @id=created.TitleId});
}

In the above example we are doing the PRG pattern. Post -> Redirect -> Get After saving, we are redirecting them back to the first method. It will be a HTTP GET method.

Upvotes: 3

Related Questions