How to set the View Name in my controller in MVC

I am creating an application using TDD with MVC 4.  I have a very simple HomeController and Index action that simply returns a View.  This view displays a menu to the user.  Here is the controller code:

HomeController.cs
using System;
using System.Web.Mvc;
using AppCatalog.Models;

namespace AppCatalog.Controllers
{
    public class HomeController : Controller
    {
        [AuthUser(Roles = "IST")]
        public ViewResult Index()
        {
            ViewBag.Title = "Application Catalog";

            return View();
        }

    }
}

Open in new window


Here is the corresponding View:

@{
    <!-- Set the page title text -->
    ViewBag.Label = (string)Session["labeltext"];
    <!-- Set the header [Verbose/Default/None]:
        Verbose = About, Contact, Date
        Default = Date Only
        None = Blank header (see below) -->
    ViewBag.Header = "Default";
    <!-- Display Linkback [Yes/No]:
        NOTE: Supported only with left_box/right_box -->
    ViewBag.Linkback = "Yes";
}

<!-- Content here will be placed in the header -->
@section header {
}

<!-- Menu, or title wrapped in <h2>...</h2> tags -->
@section menu_bar {
				<h2>
                	@ViewBag.Title
				</h2>
}

<!-- Use one_box for applications and one-column content -->
@section one_box {
<h1 style="text-align: center">@ViewBag.Title Menu</h1>

<div class="menu">
    <ul>
        <li>@Html.ActionLink("Database Catalog", "Index", "DBCatalog")</li>
        <li>@Html.ActionLink("User's Guide", "UserGuide", new {controller="Home"}, new { target = "_blank" })</li>
    </ul>
</div>
}

Open in new window


I have a unit test that simply wants to verify the View returned is the Index view but the test is failing.  When I debug the test and look at result.ViewName, it is null.  Here is the unit test:

HomeControllerTest.cs
        [TestMethod]
        public void Index_Get_AsksForIndexView()
        {
            // Arrange
            var controller = new HomeController();

            // Act
            ViewResult result = controller.Index();

            // Assert
            Assert.AreEqual("Index", result.ViewName);
        }

Open in new window


Can someone please tell me how I can verify the Index View is being returned?
dyaroshAsked:
Who is Participating?
 
Carl TawnConnect With a Mentor Systems and Integration DeveloperCommented:
Basically you can't. If you don't specify the view name when returning it (i.e. return View("Index");) then you can't check the name.

However, you shouldn't need to because if you don't specify a view name then the view name is by definition the same as the action name.
0
 
dyaroshAuthor Commented:
Thank you.
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.