2013-09-23 3 views
1

Каков наилучший способ получить данные от моего контроллера до таблицы на мой взгляд.Передача данных с контроллера MVC для просмотра

CONTROLLER

 [HttpPost] 
    public ActionResult PBHEP(string PC,string FC) 
    { 
     JavaScriptSerializer ser = new JavaScriptSerializer(); 
     List<Conditions> PC_rows = ser.Deserialize<List<Conditions>>(PC); 
     List<Conditions> FC_rows = ser.Deserialize<List<Conditions>>(FC); 


     PlotXYContext plotXYContext = new PlotXYContext(); 
     int Township = PC_rows[0].Township, Range = PC_rows[0].Range, Section = PC_rows[0].Section, Acres = PC_rows[0].Acres, Crop = Convert.ToInt32(PC_rows[0].Crop); 

     var query_XYCells = from TRS2Cell in plotXYContext.XYCells 
          where (TRS2Cell.Twnshp == Township) && (TRS2Cell.Rng == Range) && (TRS2Cell.Section == Section) 
          select new { TRS2Cell.Xcell, TRS2Cell.Ycell }; 
     var output_XYCells = query_XYCells.ToList(); 

     int XCell = Convert.ToInt32(output_XYCells[0].Xcell), YCell = Convert.ToInt32(output_XYCells[0].Ycell); 
     var query_CIRvalues = from aAvgCIR in plotXYContext.CIRvalues 
           where (aAvgCIR.X == XCell) && (aAvgCIR.Y == YCell) && (aAvgCIR.Crop == Crop) 
           select new { aAvgCIR.PumpNetIrrig, aAvgCIR.NonPumpNetIrrig, aAvgCIR.PumpDeepPerc, aAvgCIR.NonPumpDeepPerc }; 
     var output_CIRvalues = query_CIRvalues.ToList(); 

     float CIR = output_CIRvalues[0].PumpNetIrrig + output_CIRvalues[0].NonPumpNetIrrig, 
      Recharge = output_CIRvalues[0].PumpDeepPerc + output_CIRvalues[0].NonPumpDeepPerc, 
      GW_Withdrawal = (CIR - Recharge) * (Acres/12); 

     ViewBag.CIR = CIR; 
     return View(); 
    } 

    public ActionResult PBHEP() 
    { 
     return View(); 
    } 

VIEW

<tbody> 
     <tr> 
      <td style =" text-align:center" colspan="10"><b>Computed CIR Offsets</b></td> 
     </tr> 
     <tr> 
      <td style =" text-align:center"><b>Township</b></td> 
      <td style =" text-align:center"><b>Range</b></td> 
      <td style =" text-align:center"><b>Section</b></td> 
      <td style =" text-align:center"><b>Crop</b></td> 
      <td style =" text-align:center"><b>Acres</b></td> 
      <td style =" text-align:center"><b>CIR(IN)</b></td> 
      <td style =" text-align:center"><b>Recharge(IN)</b></td> 
      <td style =" text-align:center"><b>GW Withdrawal(AF)</b></td> 
      <td style =" text-align:center"><b>Platte River Depletion (Percent)</b></td> 
      <td style =" text-align:center"><b>Estimated Net Depletion (AF)</b></td> 
     </tr> 
     <tr> 
      <td style =" text-align:center" colspan="10"><b>Present Conditions</b></td> 
     </tr> 
     @(ViewBag.CIR > 0) 
     { 
     <tr> 
      <td style =" text-align:center"><b></b></td> 
      <td style =" text-align:center"><b></b></td> 
      <td style =" text-align:center"><b></b></td> 
      <td style =" text-align:center"><b></b></td> 
      <td style =" text-align:center"><b></b></td> 
      <td style =" text-align:center"><b></b></td> 
      <td style =" text-align:center"><b></b></td> 
      <td style =" text-align:center"><b></b></td> 
      <td style =" text-align:center"><b></b></td> 
      <td style =" text-align:center"><b></b></td> 
     </tr> 
     } 
    </tbody> 

Я имею таблицу выше, на мой взгляд, и хочу следующую строку заполняется значениями с плавающей точкой в ​​контроллере, как я могу получить их там. Какова наилучшая практика?

Я пытался использовать ViewBag обновить одно значение, но не был в состоянии обновить мой UI

Спасибо заранее!

+0

Используйте модель просмотра или «ViewBag». – asymptoticFault

+0

Как я могу достичь этого, пожалуйста, перешлите мне какие-либо ссылки. Я попытался использовать viewbag, но не смог обновить интерфейс. – sss111

ответ

2

Вы можете использовать сильно типизированные с моделью пользовательского класса, например, принять следующий контроллер:

public class HomeController : Controller 
{ 
    public ActionResult TaskView() 
    { 
     Task t = new Task() { Id = "1", Description= "Task 1", Name="Some Task Name"}; 

     return View(t); 
    } 
} 

public class Task 
{ 
    public string Id { get; set; } 
    public string Name { get; set; } 
    public string Description { get; set; } 
} 

Тогда ваш взгляд может выглядеть следующим образом:

@model MvcApplication1.Controllers.Task 

@{ 
    ViewBag.Title = "TaskView"; 
} 

<h2>TaskView</h2> 
@Model.Id - @Model.Name - <b>@Model.Description</b> 

Примечания как я использовал @model в начале страницы, чтобы определить тип данных и @Model далее на странице, чтобы получить доступ к данным, возвращаемым в представление.

+0

Я создал класс для выходных параметров, но когда я отлаживаю .cshtml, он показывает, что на пост он дает значения, но не показывает добавляемую строку. – sss111

+0

Удалите чек для viewbag.cir, если вы изменили его, чтобы использовать сильно типизированную модель. –

+0

Я фактически заменил его if (IsPost). Правильно ли это? Так как я не хотел добавлять эту строку, если это не сообщение. – sss111

Смежные вопросы