【发布时间】:2019-09-03 14:54:49
【问题描述】:
我在 ASP.NET MVC Web 应用程序的视图内有一个 Javascript 函数。
在我的页面中传递的模型是一个列表。
@model IEnumerable<DeliveryDashboard.Models.LeaveDetailsModel>
Javascript 函数如下所示:
function ShowLeavePopup(ParameterEmpID) {
var selecteddates = @Model.Where(i => i.EmpID == ParameterEmpID).Select(c => c.ExistingLeaveString).FirstOrDefault();
alert(selecteddates);
// do stuff with the selecteddates
}
此代码不起作用。我试图检索的模型属性是一个简单的字符串数据。
如果我在 lambda 表达式中对数据进行硬编码,那么它就可以工作。但是如何让它从javascript方法签名中读取参数呢?
var selecteddates = "@Model.Where(i => i.EmpID == 112233).Select(c => c.ExistingLeaveString).FirstOrDefault();
alert(selecteddates)"
我总是可以进行 Ajax 调用并回发到服务器以从数据库中获取数据。但是由于我需要的数据已经在模型列表中,是否有可能以某种方式从模型本身中提取数据?
【问题讨论】:
-
@Model.Where(i => i.EmpID == ParameterEmpID).Select(c => c.ExistingLeaveString).FirstOrDefault();的结果是什么样的..? -
只是一个字符串。它看起来像“此用户之前申请过休假”。
-
你的输出是什么?您的 html 页面看起来如何(尤其是脚本部分)?我认为 C# 只会在源 ant 中写入对象的类型,这不是 javascript 的可处理格式。
-
那你需要引用它:
var selecteddates = "@Model.Where(i => i.EmpID == ParameterEmpID).Select(c => c.ExistingLeaveString).FirstOrDefault();" -
@Stuart 如果我在 lambda 表达式中对 ParameterEmpID 进行硬编码,它就可以工作。但它不接受函数签名中的参数。
标签: javascript c# razor