Razor 页面中的范围和变量类型(更正)
Scope and variable types in Razor pages (corrected)
又是一个初学者的问题。我使用 JavaScript 函数从下拉列表中捕获了一个值,并试图在我的页面上使用它。但是,我的 return 值 (LocationID) 是错误的数据类型,代码无法编译。 (当我尝试下面的 "if" 行时 if (pc.LocationID = Model.BookingSL.SelectedValue) 我收到了一条消息。我试过进行类型转换以将数字放入字符串中,但似乎没有任何效果。
下面给出了 "The name 'LocSelected' does not exist in the current context",无论我是否在 LocSelected 前面加上 @。我不明白变量范围发生了什么,因为我读过的所有内容都告诉我 public 属性 应该在我的 page/page 模型的其他地方可用。
我是不是又漏掉了什么明显的东西?如何将我的选择列表中的值与其他当前 table 实体 (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
如有任何提示,我将不胜感激。谢谢
我认为您可能对模型如何绑定到页面感到困惑。在您的 Home.cshtml 页面上的 @{ } 块中,您应该有一个名为 Model
(大写)的 属性,然后 属性 应该有 LocSelected
属性 可用,至少在我阅读您的代码时是这样。
然后为了比较以过滤数据,对于标准的 Razor 页面,您需要使用 JS 或页面上的 JQuery 来解决,或者通过搜索设置返回服务器的 GET 请求值,以及包含更新列表的响应。 AJAX 和 API 端点是另一个不错的选择,您可以包括 Razor 组件 (Blazor),这将允许在没有 Javascript 的情况下进行一些更丰富的客户端交互,并且可以在 RazorPages 中使用应用程序。
根据您对 JS 和 JQuery 以及相关 DOM 操作的熟悉程度,这可能是您的门票。使用 GET 方法获取初始值,使用客户端技术执行您需要执行的操作,然后 POST 完成后返回,从而减少访问服务器的次数。
又是一个初学者的问题。我使用 JavaScript 函数从下拉列表中捕获了一个值,并试图在我的页面上使用它。但是,我的 return 值 (LocationID) 是错误的数据类型,代码无法编译。 (当我尝试下面的 "if" 行时 if (pc.LocationID = Model.BookingSL.SelectedValue) 我收到了一条消息。我试过进行类型转换以将数字放入字符串中,但似乎没有任何效果。
下面给出了 "The name 'LocSelected' does not exist in the current context",无论我是否在 LocSelected 前面加上 @。我不明白变量范围发生了什么,因为我读过的所有内容都告诉我 public 属性 应该在我的 page/page 模型的其他地方可用。
我是不是又漏掉了什么明显的东西?如何将我的选择列表中的值与其他当前 table 实体 (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
如有任何提示,我将不胜感激。谢谢
我认为您可能对模型如何绑定到页面感到困惑。在您的 Home.cshtml 页面上的 @{ } 块中,您应该有一个名为 Model
(大写)的 属性,然后 属性 应该有 LocSelected
属性 可用,至少在我阅读您的代码时是这样。
然后为了比较以过滤数据,对于标准的 Razor 页面,您需要使用 JS 或页面上的 JQuery 来解决,或者通过搜索设置返回服务器的 GET 请求值,以及包含更新列表的响应。 AJAX 和 API 端点是另一个不错的选择,您可以包括 Razor 组件 (Blazor),这将允许在没有 Javascript 的情况下进行一些更丰富的客户端交互,并且可以在 RazorPages 中使用应用程序。
根据您对 JS 和 JQuery 以及相关 DOM 操作的熟悉程度,这可能是您的门票。使用 GET 方法获取初始值,使用客户端技术执行您需要执行的操作,然后 POST 完成后返回,从而减少访问服务器的次数。