我正在开发一个应用程序。我创建了一个视图和一个控制器。视图有一个按钮,点击该按钮我应该进行数据库操作。我把数据库操作放在模型中,我在控制器中创建模型的对象。单击该按钮时,操作由控制器中的方法处理,并且创建模型的对象以从数据库获取记录。我想知道是否有任何方法可以在视图中显示这些数据。方法是正确的还是视图应该直接与模型交互以获取数据。 以下是在按钮单击
上调用的控制器中的代码public ActionResult getRecord()
{
DataModel f_DM = new DataModel();
DataTable f_DT = f_DM.getRecord();
return View();
}
DataModel是模型类,只有一个方法“getRecord”。 任何帮助将受到高度赞赏。
我想补充说我正在使用vs2010和mvc4
此致
答案 0 :(得分: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
答案 1 :(得分: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);
}
在视图中它应该是:
@model DataTable
@Model.PropertyOne @Model.PropertyTwo
它应该适合你。 实际上这里有同样的例子:http://www.dotnetpools.com/Article/ArticleDetiail/?articleId=151