Значения ViewModel не отображаются в gridview при назначении тегу href - PullRequest
0 голосов
/ 06 мая 2019

Я пытаюсь установить столбец gridview в качестве столбца ссылок, но при передаче значений из модели представления они не отображаются. Я не уверен, где я ошибся. Пожалуйста, помогите мне с этим вопросом. Спасибо!

ViewModel

 public class ViewModelBase
 {
        //Current user data
        public string Id { get; set; }
        public string UserName { get; set; }
        public string Name { get; set; }

        //Report data
        public string ReportName { get; set; }
        public string Brand { get; set; }
        public string FileName { get; set; }
        public string FilePath { get; set; }

        public virtual List<Report> Reports { get; set; }
}
public class ReportViewModel : ViewModelBase
{  
}
public class CurrentUserViewModel : ViewModelBase
{
}

Пользовательские отчеты:

public class ReportRepository
{
        public List<Report> CurrentUserReports()
        {
            FulfillmentContext db = new FulfillmentContext();
            var userRepository = new UserRepository();
            var currentUser = userRepository.GetCurrentUser();
            var allReports = db.Reports;

            return (from r in allReports.ToList()
                    where (r.UserId == currentUser.Id)
                    orderby r.CreatedOn descending
                    select r).ToList();                        
        }
}    

Контроллер:

public ActionResult Index()
{
            var reportRepository = new ReportRepository();
            var userRepository = new UserRepository();

            var userReports = reportRepository.CurrentUserReports();
            var currentUser = userRepository.GetCurrentUser();

            var viewModel = new ViewModelBase
            {
                Reports = userReports,
                Name = currentUser.Name,
                UserName = currentUser.UserName
            };

            return View(viewModel);
}

Вид:

@model FulfillmentPortal.ViewModels.ViewModelBase
@{
    ViewBag.Title = "Home Page";
    Layout = "~/Views/Shared/_Layout.cshtml";
    var grid = new WebGrid(Model.Reports, rowsPerPage: 20, canPage: true, canSort: true);
}

<script>pageindicator = 0;</script>

<div>
    <div class="sc-home-splash"></div>

    <div class="panel panel-primary">
        <div class="panel-heading">REPORTS</div>
        <div class="panel-body" style="padding-left: 35px;">
            @if (Model.Reports.Count() != 0)
            {
                <div id="grid">
                    @grid.GetHtml(tableStyle: "grid-table",
                    headerStyle: "grid-header",
                    footerStyle: "grid-footer",
                    alternatingRowStyle: "grid-alter-row",
                    rowStyle: "grid-row",
                    mode: WebGridPagerModes.All,
                    firstText: "<< First",
                    previousText: "< Prev",
                    nextText: "Next >",
                    lastText: "Last >>",
                    columns: grid.Columns(
                    grid.Column("ReportName", "Report Name", format: @<a href="~/Content/Report/@Model.FileName">@Model.ReportName</a>),
                    grid.Column("Brand", "Brand"),
                    grid.Column("FileName", "File Name"),
                    grid.Column("CreatedOn", "Date")

                    ))
                </div>
            }
            else
            {
                <p>No Records Found!</p>
            }

        </div>
    </div>

В этот момент я использую формат: @ Model.FileName и @ Model.ReportName. Значения модели пусты. Пожалуйста, помогите мне найти что-то не так.

1 Ответ

0 голосов
/ 06 мая 2019

Вы забыли, что задали эти два свойства ViewModel в своей функции Index. Вы устанавливаете только отчеты, имя и имя пользователя. Установите эти два

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...