【问题标题】:Scope and variable types in Razor pages (corrected)Razor 页面中的范围和变量类型(已更正)
【发布时间】:2020-05-01 20:24:12
【问题描述】:

另一个初学者的问题。我已经使用 JavaScript 函数从下拉列表中捕获了一个值,并尝试在我的页面上使用它。但是,我的返回值 (LocationID) 是错误的数据类型,代码无法编译。 (当我尝试下面的“if”行作为 if (pc.LocationID = Model.BookingSL.SelectedValue) 时,我收到了一条消息。我试图做一个类型转换来输入数字变成一个字符串,但似乎没有任何效果。

下面给出“名称'LocSelected'在当前上下文中不存在”,无论我是否在LocSelected前面加上@。我不明白变量范围发生了什么,因为我读过的所有内容都告诉我,公共属性应该在我的页面/页面模型的其他地方可用。

我又错过了什么明显的东西吗?如何将我的选择列表中的值与我的其他当前表实体 (PCList) 中的字段值进行比较? (Selectlist.SelectedValue 甚至是 SelectList 的正确属性来获取单个选定值吗?)

在 Home.cshtml.cs 中

namespace Bookit.Pages
{
    public class HomeModel : PageModel
    {
        ..
        [BindProperty (SupportsGet= true)] public string LocSelected {get; set; }

在 Home.cshtml 中

    {
       LocSelected = pc.LocationID.ToString();  
       if (LocSelected == Model.BookingSL.SelectedValue.ToString())
       { // filter the following data shown

如有任何提示,我将不胜感激。谢谢。

【问题讨论】:

    标签: c# visual-studio-code scope razor-pages


    【解决方案1】:

    我认为您可能对模型如何绑定到页面感到困惑。在 Home.cshtml 页面上的 @{ } 块内,您应该有一个可用的属性,称为 Model(大写),然后该属性应该有可用的 LocSelected 属性,至少在我阅读您的代码时是这样。

    然后,为了比较过滤数据,对于标准 Razor 页面,您需要在页面上使用 JS 或 JQuery 进行处理,或者使用搜索值设置返回服务器的 GET 请求,响应有你的更新列表。带有 API 端点的 AJAX 是另一个不错的选择,您可能会包括 Razor 组件 (Blazor),这将允许在没有 Javascript 的情况下进行一些更丰富的客户端交互,并且可以在 RazorPages 应用程序中使用。

    根据您对 JS 和 JQuery 以及相关 DOM 操作的熟悉程度,这可能是您的选择。使用 GET 方法获取您的初始值,使用客户端技术来完成您需要做的事情,然后在完成后将其 POST 回来,从而减少访问服务器的次数。

    【讨论】:

    • 谢谢尼克。我在我的逻辑中发现了一些错误。以为我已经尝试过 Model.LocSelected 但显然没有,因为这让我克服了最初的问题。我仍然坚持比较,因为我的 SelectList 最初是空的,但显然不是空的,并且试图检查它的计数是否大于零给我 "Operator '>' 不能应用于类型的操作数 '方法组'".
    猜你喜欢
    • 2012-04-09
    • 1970-01-01
    • 2012-02-24
    • 2010-12-21
    • 2011-08-24
    • 1970-01-01
    • 2022-01-07
    • 1970-01-01
    • 2021-02-08
    相关资源
    最近更新 更多