gpt4 book ai didi

c# - 如何调用其中包含局部 View 的 jQuery 弹出窗口?

转载 作者:行者123 更新时间:2023-11-30 13:01:22 24 4
gpt4 key购买 nike

在我的 MVC 网络应用程序中,我需要创建一个带有部分 View (包含 webgrid)的弹出窗口, 问题是部分 View 数据没有显示在对话框中,我只看到标题。似乎我对 Controller 调用也有问题,请注意我使用了动态模型创建,因为模型是在 Controller 中动态创建的,而不是现有模型,不知道如何使用这种类型的模型。谢谢你的帮助,这是我的代码: 这是 Razor View 中的按钮: 这个 jQuery 代码:

  $(document).ready(function () {
$("#GetEmp").click(function (event) {
$("#popup").dialog({
width: 200,
hight: 400,
title: 'please select an employee',
modal: true,
open: function (event, ui) {
$(this).load("@Url.Action("Travel", "GetEmployee")");
}

});
});
});

这是 Controller 代码:

    public class Employee
{
public string EmpName;
public string EmpPhone;
public string EmpNum;
}

[HttpPost]
public ActionResult GetEmployee()
{
List<Employee> Emp = new List<Employee>
{
new Employee { EmpName= "ScottGu", EmpPhone = "23232323", EmpNum="242342"},
new Employee { EmpName = "Scott Hanselman", EmpPhone = "3435353", EmpNum="34535"},
new Employee { EmpName = "Jon Galloway", EmpPhone = "4534535345345",
EmpNum="345353"}

};

return PartialView("_EmpPartial", Emp );
}

这是员工局部 View :请注意,我在模型中使用动态,因为模型是动态创建的。

 @model dynamic
<ul>
@foreach (var emp in Model) {
<li>
@emp.EmpName
</li>
}
</ul>

您好,感谢您的快速回复,我试过了,删除 [HttpPost] 并将 @foreach 更改为 @foreach(模型中的 var emp 作为列表),但编译时不会带有红色下划线。我必须在局部 View 中保持@model 动态吗?

最佳答案

将您的 Controller 更改为:

public ActionResult GetEmployees()
{
var employeeList = new EmployeeListViewModel {
Emp = new List<Employee>
{
new Employee { EmpName= "ScottGu", EmpPhone = "23232323", EmpNum="242342"},
new Employee { EmpName = "Scott Hanselman", EmpPhone = "3435353", EmpNum="34535"},
new Employee { EmpName = "Jon Galloway", EmpPhone = "4534535345345",
EmpNum="345353"}

}
};

return Json(RenderPartialView("_EmpPartial", employeeList ));
}

protected string RenderPartialView(string partialViewName, object model = null)
{
if (ControllerContext == null)
return string.Empty;

if (string.IsNullOrEmpty(partialViewName))
throw new ArgumentNullException("partialViewName");

ModelState.Clear();//Remove possible model binding error.

ViewData.Model = model;//Set the model to the partial view

using (var sw = new StringWriter())
{
var viewResult = ViewEngines.Engines.FindPartialView(ControllerContext, partialViewName);
var viewContext = new ViewContext(ControllerContext, viewResult.View, ViewData, TempData, sw);
viewResult.View.Render(viewContext, sw);
return sw.GetStringBuilder().ToString();
}
}

你的 jquery 会是这样的:

$(document).ready(function () {


$("#GetEmp").click(function (event) {
$.post('@Url.Action("Travel", "GetEmployee")', {}, function(resp){
$('#popup').html(resp);
});
$("#popup").dialog({
width: 200,
hight: 400,
title: 'please select an employee',
modal: true,

});
});
});

关于c# - 如何调用其中包含局部 View 的 jQuery 弹出窗口?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20020404/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com