0

我正在开发一个应用程序。我创建了一个视图和一个控制器。该视图有一个按钮,单击该按钮我应该进行数据库操作。我已将数据库操作放入模型中,我正在控制器中创建模型对象。单击按钮时,操作由控制器中的方法处理,并创建模型对象以从数据库中获取记录。我想知道是否有任何方法可以在视图中显示这些数据。该方法是否正确或视图应该直接与模型交互以获取数据。以下是在按钮单击时调用的控制器中的代码

public ActionResult getRecord()
{
DataModel f_DM = new DataModel();
DataTable f_DT =  f_DM.getRecord();

return View();
}

DataModel 是具有简单方法“getRecord”的模型类。任何帮助将不胜感激。

我想补充一点,我正在使用 vs2010 和 mvc4

问候

4

2 回答 2

1

您应该在控制器中编写检索数据的逻辑。将所有数据存储在视图模型中并将其传递给视图。

例如。

模型

namespace Mvc4App.Models
{
  public class Product
  {
    public string Name { get; set; }
  }
  public class ProductViewModel
  {
    public Product Product { get; set; }
    public string SalesPerson { get; set; }
  }
}

控制器

public class ProductController : Controller
{
  public ActionResult Info()
  {
    ProductViewModel ProductViewModel = new ProductViewModel
    {
      Product = new Product { Name = "Toy" },
      SalesPerson = "Homer Simpson"
    };
    return View(ProductViewModel);
  }
}

看法

@model Mvc4App.Models.ProductViewModel
@{ ViewBag.Title = "Info"; }
<h2>Product: @Model.Product.Name</h2>
<p>Sold by: @Model.SalesPerson</p>

这是将数据从控制器传递到视图的最佳实践。

您也可以使用其他技术,例如,

1. ViewData 
2. ViewBag 
3. TempData 
4. View Model Object  
5. Strongly-typed View Model Object
于 2013-06-18T13:38:27.690 回答
0

是的,这是可能的,但实际上现在是非常合乎逻辑的方式。

让我们按照你的方式。如果您有一个按钮,则您有一些视图,它将触发此操作。

例如:

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

在内部视图中,您可以有一个 Ajax 链接,它将触发您的 getRecord 方法:

<div id="GetDataDiv"></div>
<div>
@Ajax.ActionLink("Get Record", "getRecord", "ControllerName", null, new AjaxOptions() { HttpMethod = "GET", UpdateTargetId = "GetDataDiv" })
</div> 

在 getRecord 方法中,您应该有:

public ActionResult getRecord()
{
DataModel f_DM = new DataModel();
DataTable f_DT =  f_DM.getRecord();

return PartialView(f_DT);
}

在 View 中应该是:

@model DataTable

@Model.PropertyOne @Model.PropertyTwo

它应该适合你。实际上在这里相同的例子:http: //www.dotnetpools.com/Article/ArticleDetiail/? articleId=151

于 2013-06-18T13:35:13.877 回答