【问题标题】:Send and Receive data in .cshtml page在 .cshtml 页面中发送和接收数据
【发布时间】:2012-12-17 18:58:41
【问题描述】:

我正在做作业,我正在用 asp.net MVC 3 开发一个购物网站,目前我只在视图中做我的工作。我有一个产品页面,点击详细信息我必须打开产品详细信息页面。

<a href="ProductDetails.cshtml"> Details </a>

我有多个产品,我想告诉我的产品详细信息页面打开了哪些产品详细信息。一种方法是我可以在 ID 后面附加 URL,例如

<a href="ProductDetails.cshtml?id=1"> Details </a>

但我无法理解如何在产品详细信息页面上接收此 ID,因为我没有控制器也没有模型,并且我使用服务器端代码在 .cshtm 页面上使用紧凑型数据库获取数据。

【问题讨论】:

  • 您使用的是 MVC,但您没有 M 或 C?
  • 是的,因为我是一名学生并且是按零件工作的,所以目前我没有 M 或 C。在 M 或 C 上,我的讲座将在明天举行 :)
  • 您似乎遗漏了 ASP.NET MVC 工作原理背后的一些基本思想。您可能想尝试一些教程:asp.net/mvc/tutorials 我想这会澄清您的问题。

标签: c# asp.net asp.net-mvc asp.net-mvc-3 razor


【解决方案1】:

您可以使用Request.QueryString["key"] 访问查询字符串。所以我想你会想要使用这样的东西:

@{
    var myProductId = Request.QueryString["id"];
}

警告:当然这是一种不好的做法,通常 MVC 模式要求您在 Controller 的操作中提取 ID,获取模型数据,然后将该模型数据返回给看法。视图应该尽可能少地了解查询字符串和任何程序逻辑等内容。

public class ProductController : Controller
{
    public ActionResult ProductDetails(string id)
    {
        MyProduct model = SomeDataSource.LoadByID(id);
        return View(model);
    }
}

【讨论】:

    【解决方案2】:

    您可以通过 Request 对象访问它:

    @Request.Params["id"]
    

    【讨论】:

      【解决方案3】:

      没有人提到您可能想要更改链接:

      <a href="ProductDetails.cshtml?id=1"> Details </a>
      

      类似于:

      <a href="@Url.Action("ProductDetails", "Product", new {@id = 1})" >Details</a>
      

      【讨论】:

        【解决方案4】:
        <div class="box-button">@Html.ActionLink("Details", "Course", new { id = item.id }, new { @class = "btn btn-default" })</div>
        

        【讨论】:

          猜你喜欢
          • 2021-07-19
          • 1970-01-01
          • 2010-12-22
          • 2020-12-28
          • 1970-01-01
          • 2012-04-12
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多