首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >让数据显示在我的视图中

让数据显示在我的视图中
EN

Stack Overflow用户
提问于 2015-07-24 04:54:35
回答 2查看 34关注 0票数 0

我有一个工作正常的模型和控制器,但是我的模型没有在视图中显示任何数据。你知道我做错了什么吗?

我有一个单一的模型,我试图传递其中的几个变量。

我正在尝试使用Html.ViewData.Model。(这里是变量名)。即使我在模型中有硬设置值,我仍然得到一个空异常。

有什么想法吗?

模型

代码语言:javascript
运行
复制
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using Microsoft.AspNet.Identity;
using Microsoft.Owin.Security;


namespace stuff
{
    public class BACnetModel
    {
        private string _rmNum = "Room Number";
        public string RmNum { get { return _rmNum; } set{_rmNum = value;} }

        private string _avRes = "70";
        public string AvRes { get { return _avRes; } set {_avRes = value;} }

        private string _bvRes = "T";
        public string BvRes { get { return _bvRes; } set { _bvRes = value; } }

        private string _mvRes = "O";
        public string MvRes { get { return _mvRes; } set { _mvRes = value; } }
    }
}

控制器

代码语言:javascript
运行
复制
public class PEOController : Controller
    {

        //Set default values
        private string AvResult = "90";
        private string BvResult = "T";
        private string MvResult = "O";
        private string rmNum = "Room";

        // GET: PEO

        public ActionResult PEO(string BvResult, string AvResult, string MvResult, string rmNum)
        {

            var model = new BACnetModel
            {
                AvRes = AvResult,
                BvRes = BvResult,
                MvRes = MvResult,
                RmNum = rmNum
            };

            return View(model);
        }

        public ActionResult getRoomNumber(string roomNumber, ref uint BvInstance, ref uint AvInstance, ref uint MvInstance, out string rmNum)
        {
            switch (roomNumber)
            {
                case ("1B^1001^01"):
                    rmNum = "1B^1001^01";
                    BvInstance = 3000018;
                    AvInstance = 3000022;
                    MvInstance = 3000040;
                    break;

                case ("1B^1002^01"):
                    rmNum = "1B^1002^01";
                    BvInstance = 3000020;
                    AvInstance = 3000023;
                    MvInstance = 3000042;
                    break;

                default:

                    break;
            }
            rmNum = "Room";

            var model = new BACnetModel
            {
                AvRes = AvResult,
                BvRes = BvResult,
                MvRes = MvResult,
                RmNum = rmNum
            };


            return View(model);
        }

    }

视图

代码语言:javascript
运行
复制
@using  Stuff
@using Microsoft.Ajax.Utilities
@model BACnetModel

@{
    ViewBag.Title = "";
    Layout = "~/Views/Shared/_Layout.cshtml";
}

<h2> Stuff(PEO)</h2>
<p>
    Stuff
</p>
<label>Select a Room: </label>
<!-- I need to add Code that will loop through the database and provide rooms.
        I will need to provide a query that will be called on page load.-->

<form action="/PEO/getRoomNumber">
    <select id="roomList">
        <option value="1B^1001^01">1B^1001^01</option>
        <option value="1B^1002^01">1B^1002^01</option>
    </select><br/><br/>

    <fieldset id="peoFieldset">
        <legend>Room Results</legend>
        <label for="roomNumber">Room Number:</label>
        <input id="roomNumber" readonly="readonly"/>@Html.ViewData.Model.RmNum<br>
        <label for="rmSetpoint">Room Setpoint: </label>
        <input id="rmSetpoint" readonly="readonly" />@Html.ViewData.Model.AvRes<br>
        <label for="rmCode">Room Code: </label>
        <input id="rmCode" readonly="readonly" />@Html.ViewData.Model.BvRes<br>
        <label for="rmOcc">Room Occupancy: </label>
        <input id="rmOcc" readonly="readonly" />@Html.ViewData.Model.MvRes<br>
    </fieldset>
</form>

<label>Occupancy Value</label>
<select id="occValue">
    <option value="Occupied">Occupied</option>
    <option value="Unoccupied">Unoccupied</option>
</select>
EN

回答 2

Stack Overflow用户

发布于 2015-07-24 05:55:28

我不确定您为什么要在视图中使用ViewData。而是使用标准的模型绑定。在您的视图中尝试以下代码:

代码语言:javascript
运行
复制
<fieldset id="peoFieldset">
    <legend>Room Results</legend>
    <label for="roomNumber">Room Number:</label>
    <input id="roomNumber" readonly="readonly"/>@Model.RmNum<br>
    <label for="rmSetpoint">Room Setpoint: </label>
    <input id="rmSetpoint" readonly="readonly" />@Model.AvRes<br>
    <label for="rmCode">Room Code: </label>
    <input id="rmCode" readonly="readonly" />@Model.BvRes<br>
    <label for="rmOcc">Room Occupancy: </label>
    <input id="rmOcc" readonly="readonly" />@Model.MvRes<br>
</fieldset>
票数 1
EN

Stack Overflow用户

发布于 2015-07-24 20:32:07

我让它起作用了。

首先,我在任何方法之外的控制器中创建了模型的一个实例。

代码语言:javascript
运行
复制
private BACnetModel model = new BACnetModel();

完成此操作后,我设置了模型的值,并将它们作为Action方法的一部分返回。

代码语言:javascript
运行
复制
public ActionResult PEO()
        {
            var Room1 =
                new SelectListItem {Text = "1B^1001^01", Value = "1B^1001^01"};
            var Room2 =
                new SelectListItem {Text = "1B^1002^01", Value = "1B^1002^01"};

            roomList.Add(Room1);
            roomList.Add(Room2);


            ViewBag.RoomList = new SelectList(roomList, "Text", "Value");

            model.RmNum = "";
            model.AvRes = "";
            model.BvRes = "";
            model.MvRes = "";


            return View(model);
        }

然后,我转到我的视图并将Model值放入视图中。

代码语言:javascript
运行
复制
<fieldset id="peoFieldset">
        <legend>Room Results</legend>
        <label for="roomNumber">Room Number:</label>
        <input id="roomNumber" readonly="readonly" value="@Model.RmNum" /><br>
        <label for="rmSetpoint">Room Setpoint: </label>
        <input id="rmSetpoint" readonly="readonly" value="@Model.AvRes" /><br>
        <label for="rmCode">Room Code: </label>
        <input id="rmCode" readonly="readonly" value="@Model.BvRes" /><br>
        <label for="rmOcc">Room Occupancy: </label>
        <input id="rmOcc" readonly="readonly" value="@Model.MvRes" /><br>
    </fieldset>

就像一种护身符!

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31597851

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档