Solved

How to set the View  Name in my controller in MVC

Posted on 2014-03-27
2
538 Views
Last Modified: 2014-03-28
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?
0
Comment
Question by:dyarosh
2 Comments
 
LVL 52

Accepted Solution

by:
Carl Tawn earned 500 total points
ID: 39960173
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
 

Author Closing Comment

by:dyarosh
ID: 39961314
Thank you.
0

Featured Post

Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Today I had a very interesting conundrum that had to get solved quickly. Needless to say, it wasn't resolved quickly because when we needed it we were very rushed, but as soon as the conference call was over and I took a step back I saw the correct …
Entity Framework is a powerful tool to help you interact with the DataBase but still doesn't help much when we have a Stored Procedure that returns more than one resultset. The solution takes some of out-of-the-box thinking; read on!
Along with being a a promotional video for my three-day Annielytics Dashboard Seminor, this Micro Tutorial is an intro to Google Analytics API data.
This is used to tweak the memory usage for your computer, it is used for servers more so than workstations but just be careful editing registry settings as it may cause irreversible results. I hold no responsibility for anything you do to the regist…

910 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

22 Experts available now in Live!

Get 1:1 Help Now