jquery - 从外部 Javascript 文件访问 ASP.NET MVC 模型数据

标签 jquery asp.net-mvc model controller getjson

我正在尝试使用 JQuery 的 $.getJSON 从 Controller 访问模型数据,并在 javascript 中构建一个 JSON 对象,以供用户在列表中添加和删除项目时使用。所有 JS 都是在外部文件中完成的。模型数据对服务器的命中仅在页面首次加载后完成一次,因此我可以获得可供用户选择的完整选项列表。之后,用户可以根据需要修改列表(并且 JSON 对象也会相应更新),然后将其保存(写回数据库)。

但我的问题是:当使用 $.getJSON 时,我需要在 Controller 中调用的方法需要一个 ID,以便它可以查找我正在谈论的特定资源并获取属于该资源的选项列表该特定资源。但是从外部 JS 文件中,我不知道如何将该 ID 传递给 Controller ​​。它内置于首先打开页面的链接中,并且位于 URL 中,但是一旦页面加载,我不知道如何获取此 ID 以便将其传递给 Controller ​​。我在下面粘贴了一些代码,因为我知道这很令人困惑:

Controller 中最初加载页面的详细方法(采用资源ID来了解要加载的内容):

public ActionResult Details(string resId)
{
    //call base method
    base.Details(resId, resourceType);
    Evaluation eval = (Evaluation)this.Model;
    ViewData.Model = eval;
    return View("Index");
}

在我的外部 JS 文件中,我正在这样做:

$.getJSON("/Evaluation/PopulateJournalOptions/" + id, populateJSON);

在 Controller 中,我编写了另一个名为 PopulateJournalOptions 的方法,该方法被调用来构建 JSON 对象:

public JsonResult PopulateJournalOptions(string resId)
{
   JournalOptionsResult jsonResult = new JournalOptionsResult();

   base.Details(resId, resourceType);
   Evaluation eval = (Evaluation)this.Model;

   jsonResult.Activities = eval.Journal.Activities;
   jsonResult.Issues = eval.Journal.Issues;
   jsonResult.ScheduledActions = eval.Journal.ScheduledActions;

   return Json(jsonResult);
}

同样,我的问题是,页面加载后,我无法访问需要传递给 PopulateJournalOptions 的 ID。我尝试过不向 PopulateJournalOptions 传递任何内容,并在那里创建一个新对象并将其设置为等于 (Evaluation)this.Model,但 this.Model 似乎为 null,可能是因为它是一个新对象一旦从 JS 调用 Controller 的实例。所以我有点被困在这里了。有什么想法吗?

最佳答案

您是否考虑过将 ID 放入页面上的隐藏字段中,然后让 JavaScript 从该字段中读取 ID?

$.getJSON("/Evaluation/PopulateJournalOptions/" + $('#Id').attr('value'), populateJSON);

那么,在你看来,

<%= Html.Hidden("Id") %>

您的模型具有所需的 Id 作为属性

关于jquery - 从外部 Javascript 文件访问 ASP.NET MVC 模型数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1735665/

相关文章:

model - cakePHP 1.3 - $this->data -vs- $this->模型->数据

node.js - 为什么mongoose要这样设计?

jquery - 使用 JQuery 更改 CSS 属性

javascript - 如何使这个交换图像代码在 wordpress 中工作

javascript - 在 javascript/angularjs 中传递字符串作为查询参数

c# - ASP.NET MVC 自定义多字段验证

c# - 从供应商的 Global.asax 继承 Global.asax 时,Application_Start 不会触发

javascript - 如何使用java脚本创建的超链接添加附加参数,例如(rel ="Y"data-behavior ="X"data-token ="XXX"class ="XXX")

asp.net-mvc - 如何使用 PayPal 添加 "donate"按钮

sql-server - 生成 Entity Framework 模型 - 资源池 'internal' 中的系统内存不足,无法运行此查询