Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何使用partials来;获得;asp.net核心剃须刀页面中的内容?_C#_Asp.net Core_Get_Partials - Fatal编程技术网

C# 如何使用partials来;获得;asp.net核心剃须刀页面中的内容?

C# 如何使用partials来;获得;asp.net核心剃须刀页面中的内容?,c#,asp.net-core,get,partials,C#,Asp.net Core,Get,Partials,我在Pages/Partials/ Search.cshtml: @模型搜索模型 搜寻 Search.chshtml.cs: 使用系统; 使用System.Collections.Generic; 使用System.ComponentModel.DataAnnotations; 使用System.Linq; 使用System.Threading.Tasks; 使用Microsoft.AspNetCore.Mvc; 使用Microsoft.AspNetCore.Mvc.RazorPages;

我在
Pages/Partials/

Search.cshtml


@模型搜索模型
搜寻
Search.chshtml.cs

使用系统;
使用System.Collections.Generic;
使用System.ComponentModel.DataAnnotations;
使用System.Linq;
使用System.Threading.Tasks;
使用Microsoft.AspNetCore.Mvc;
使用Microsoft.AspNetCore.Mvc.RazorPages;
命名空间AdminPortal.Web.Pages.Partials
{
公共类搜索模型:PageModel
{
[BindProperty(SupportsGet=true)]
公共字符串搜索字符串{get;set;}
公共互联网
{
}
}
}
Home.cshtml.cs

@page”/Home
@使用AdminPortal.Web.Pages
@模型家庭模型
startup.cs

使用Microsoft.AspNetCore.Builder;
使用Microsoft.AspNetCore.Hosting;
使用Microsoft.Extensions.Configuration;
使用Microsoft.Extensions.DependencyInjection;
使用Microsoft.Extensions.Hosting;
使用Microsoft.EntityFrameworkCore;
名称空间AdminPortal.Web
{
公营创业
{
公共启动(IConfiguration配置)
{
配置=配置;
}
公共IConfiguration配置{get;}
//此方法由运行时调用。请使用此方法将服务添加到容器中。
public void配置服务(IServiceCollection服务)
{
services.AddRazorPages();
}
//此方法由运行时调用。请使用此方法配置HTTP请求管道。
public void配置(IApplicationBuilder应用程序、IWebHostEnvironment环境)
{
if(env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
其他的
{
app.UseExceptionHandler(“/Error”);
//默认的HSTS值为30天。您可能希望在生产场景中更改此值,请参阅https://aka.ms/aspnetcore-hsts.
app.UseHsts();
}
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseRouting();
app.UseAuthentication();
app.UseAuthorization();
app.UseEndpoints(端点=>
{
endpoints.MapRazorPages();
});
}
}
}

但是,当我单击submit时,它不会调用
OnGet()
方法。我做错了什么?

您需要手动添加
操作
值,或者通过表单标记帮助器方法(如
asp页面
)进行设置

<form method="get" action="/Search">
</form>

如果没有操作值,浏览器会将其发送到当前URL。如果您有一个带有表单的页面,并且它应该将其发送到相同的页面模型,比如GET(显示页面)和POST,send表单,那么这种方法很好用

但是,对于跨不同页面使用的部分URL,您需要通过设置正确的URL来指定页面

但是,当我单击submit时,它不会调用OnGet()方法。 我做错了什么

这是因为部分视图是razor视图,而不是razor页面。razor视图只是一个视图,它与控制器一起工作。您可以参考以下更详细的说明:

正确的方法是在主页中添加后端代码:

Home.cshtml.cs:

public class HomeModel : PageModel
{
    [BindProperty(SupportsGet = true)]
    public string SearchString { get; set; }
    public void OnGet()
    {

    }
}
public class HomeModel : PageModel
{
    [BindProperty(SupportsGet = true)]
    public string SearchString { get; set; }
    public void OnGet()
    {

    }
    public void OnGetSearch()
    {
       //do your stuff...
    }
}
Search.cshtml:

@model HomeModel

<body>
    <form method="get">
          //...
    </form>
</body>
@model HomeModel

<body>
    <form method="get" asp-page-handler="Search">
        //...
    </form>
</body>
Search.cshtml:

@model HomeModel

<body>
    <form method="get">
          //...
    </form>
</body>
@model HomeModel

<body>
    <form method="get" asp-page-handler="Search">
        //...
    </form>
</body>
@model HomeModel
//...

手动添加表单action:
action=“/Partials/Search”
可能是一个解决方案。但实际上,如果您不指定该操作,它在我的项目中也能正常工作。我想您需要找到导致项目无法工作的原因。请共享您的Startup.cs。当您第一次呈现搜索页面时,请检查浏览器中的请求url是否为
/Partials/Search
。您好@d4rk4ng31,您可以看到您在主页中添加了
Partials/Search
,请求url应为
/Home
。当您提交表单时,它将转到
/Home
,这就是为什么您不使用search OnGet方法。在您的场景中,您必须指定以下形式的操作:
action=“/Partials/search”
。您介意共享您的主页后端代码吗?您的主页位于哪里?在Pages文件夹中还是其他文件夹中?@Rena。我所要做的就是使用
formaction
属性。正如我的第一条评论所说,手动添加formaction是一个解决方案。但你需要知道为什么会出现这样的错误。因为你第一次更改formaction时,你说它会给你404。404表示找不到页面。这就是为什么我昨天与你进行了大量咨询。嗯,但是为什么它不能与
动作
属性一起工作呢?你是说asp动作?让我们来纠正一下:
动作
那么它就工作了!