2013-04-24 138 views
0

我使用MVC 4.在.NET框架的工作我有一個控制器:.NET剃鬚刀型號空

using DataProvider.Queries; 
using DataProvider.Models; 
using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.Mvc; 

namespace ATSGlobalDashboard.Controllers 
{ 
    public partial class ATSNavigatorController : Controller 
    { 

     public virtual ActionResult Index(DataProvider.Models.GaugeAveragesViewModel model) 
     { 
      return View(model); 
     } 
    } 
} 

模型:

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 

namespace DataProvider.Models 
{ 
    public class GaugeAveragesViewModel 
    { 
     public decimal? timetoresolutiontotalqtd { get; set; } 
     public int? backlogtotalcount { get; set; } 
     public double? AverageSatisfacationResult { get; set; } 
    } 
} 

對此我則想用爲我的視圖/數據可視化中的值。我的部分觀點是建立這樣的:

@model DataProvider.Models.GaugeAveragesViewModel 
@{ 
    ViewBag.Title = "GlobalDashboardModal"; 
} 

<div class="row"> 
    <div id="satisfactionChartButton" class="large-3 large-offset-1 columns modalGaugeArea allGaugesSetup"> 
     <div class="chartModalTitle">Customer Satisfaction</div> 
     <div id="customerSatisfactionGauge" class="gaugeContainer"></div> 
     <input id="customerSatisfactionGaugeValue" value="@Model.AverageSatisfacationResult"/> 
     <div class="chartModalDialog"></div> 
     <div id="satisfactionOverlay"> 
      <div class="overlayChartTitle">Customer Satisfaction<br /> 
       Chart 
      </div> 
      <img class="overlayImages" src="@Url.Content(Links.Content.img.wht_Desktop_Analytics_png)" /> 
      <div class="overlayChartDialog">Click to View Chart</div> 
     </div> 
    </div> 
</div> 

我希望能夠採取的輸入值,並與一些其他的資源使用它,但我得到一個空對象錯誤的@Model.AverageSatisfactionResult反正是有快速測試這個,還是我離開了使用@Model剃刀語法?

+1

你能告訴我們你的控制器代碼嗎?控制器是您需要獲取實例並將其傳遞到視圖中的地方。 '@ Model'聲明只是讓你可以在razorview中使用IntelliSense。它不會執行我在控制器部分添加的任何數據獲取 – Kenneth 2013-04-24 15:57:31

+0

。謝謝。 – Alexander 2013-04-24 16:13:28

+0

你需要一個Get ActionResult方法和一個Post ActionResult方法。在您的控制器中,當您的頁面處於GET狀態時,您的模型將爲空,因此您將一個空對象傳遞給您的視圖。那是你要的嗎? – TheGeekYouNeed 2013-04-24 16:58:00

回答

0

如果您傳遞模型視圖控制器,那麼你可以使用帶有

 @model.AverageSatisfacationResult 


    <input id="customerSatisfactionGaugeValue" value="@Model.AverageSatisfacationResult"/> 

Replace by 

    @Html.EditorFor(m=>model.AverageSatisfacationResult) 

@model不@model

編輯如下:

我看到你的控制器這是問題的原因。您將模型作爲get Action的參數,來自哪裏。如果你知道它從哪裏來,你可以做以下事情

public virtual ActionResult Index() 
     { 

      DataProvider.Models.GaugeAveragesViewModel model= new GaugeAveragesViewModel{ 
        timetoresolutiontotalqtd =1.3, 
        backlogtotalcount=3, 
        AverageSatisfacationResult=5d 
        } 
      return View(model); 
     } 
+0

我在上面添加了我的控制器代碼,當我使用不同的模型intellisense扔;預計我會研究。 – Alexander 2013-04-24 16:15:59

+0

我相信我根據我正在查看的一些示例設置了錯誤。我是.NET新手,對於剃刀語法一無所知。有沒有一種方法可以建議將控制器設置爲在視圖中最好地使用模型值? – Alexander 2013-04-24 18:17:22

+0

像上面那樣用虛擬數據測試它 – 2013-04-24 18:24:45