Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/78.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# 如何使用Asp.Net Razor在按钮单击上呈现局部视图_C#_Jquery_Html_Asp.net Core_Razor - Fatal编程技术网

C# 如何使用Asp.Net Razor在按钮单击上呈现局部视图

C# 如何使用Asp.Net Razor在按钮单击上呈现局部视图,c#,jquery,html,asp.net-core,razor,C#,Jquery,Html,Asp.net Core,Razor,我不熟悉Jquery和创建局部视图。我有一个“createproject”按钮,我试图在其中创建它,这样,如果用户单击它,页面就会呈现一个局部视图,其中包含一个表单post,用户可以在其中输入数据,并可以在razor页面后面的代码中执行OnPost() 这是我的部分视图:\u CreateProject.cshtml @page @model Visportfolio.Pages.CreatePortfolioModel @* For more information on enabli

我不熟悉Jquery和创建局部视图。我有一个“createproject”按钮,我试图在其中创建它,这样,如果用户单击它,页面就会呈现一个局部视图,其中包含一个表单post,用户可以在其中输入数据,并可以在razor页面后面的代码中执行OnPost()

这是我的部分视图:\u CreateProject.cshtml

@page
@model Visportfolio.Pages.CreatePortfolioModel
@*
    For more information on enabling MVC for empty projects, visit http://go.microsoft.com/fwlink/?LinkID=397860
*@


    <form enctype="multipart/form-data" method="post" id="partial">


        <label asp-for="Category">Category:  </label>
        <select asp-for="Category" asp-items="Model.categorylist">
            <option value="">---Select Category---</option>
        </select>


        <label asp-for="SubCategoryId">Subcategory:</label>
        <select asp-for="SubCategoryId"><option value="">---Select Subcategory---</option></select>

        <div class="row">
            <div class="col-md-4">
                <label asp-for="ProjectName"></label>
                <input asp-for="ProjectName" class="form-control" />
                <span class="alert-danger" asp-validation-for="ProjectName"></span>
            </div>
        </div>

        <div class="row">
            <div class="col-md-4">
                <label asp-for="ProjectDescription"></label>
                <input asp-for="ProjectDescription" class="form-control" />
            </div>
        </div>

        <div class="for-group-row">
            <label asp-for="FileUpload" class="col-sm-2 col-form-label"></label>
            <div class="col-md-4">
                <div class="custom-file">
                    <input asp-for="FileUpload" class="form-control custom-file-input" />
                    <label class="custom-file-label">Choose File</label>
                </div>
            </div>
        </div>

        <div class="form-group row">
            <div class="col-sm-10">
                <button type="submit" class="btn btn-primary">Create</button>
            </div>
        </div>
    </form>
注意:我也尝试过:@Html.Raw(Url.Action(“OnGetPartialProject”))而不是上面load()参数中的内容

最后,这是我尝试渲染局部视图的方法

public IActionResult OnGetPartialProject()
        {
            return Partial("~/Pages/Portfolio/_CreateProject.cshtml");
        }

我曾经尝试过使用MVC的例子,并尝试过用Razor操作它,但我不确定该修复什么。我知道Jquery没有调用应该呈现部分视图的处理程序方法,因为我在那里放置的断点从未到达。因此,我认为Jquery是不正确的,但我不确定为什么。如果在修复该问题后,我在此处创建的调用部分视图的其余语法适用于使用id=“partial”?将该部分视图加载到中的场景,请尝试以下步骤:

  • \u CreateProject.cshtml
    共享页面移动到
    页面
    文件夹内的
    共享
    文件夹

  • 假设您在
    Pages
    文件夹中有
    Portfolio
    文件夹,其中有
    CreatePortfolio.cshtml
    page。将jquery url修改为:

    $('#call_partial').click(function () {
        $('#partial').load("/Portfolio/CreatePortfolio?handler=PartialProject");
                });
    
    OnGetPartialProject
    方法如下:

    public IActionResult OnGetPartialProject()
    {
        return Partial("_CreateProject");
    }
    

  • 我试过了,但没用。当我点击按钮时,什么也没发生。它从来都不是handler方法,所以按钮或Jquery仍然可能有问题?我现在理解Razor的语法在这方面有点不同。我能够通过用一个塑料袋包裹按钮,使按钮到达处理程序。这会调用处理程序,但我不确定它是否会填充,因为我认为没有调用jQuery。我现在得到:ArgumentNullException:值不能为null。参数名称:viewData,因为局部视图不知道ProjectName、ProjectDescription等。是否有办法在div中显示此表单,以便用户可以输入其信息并发布?不确定当前场景,您可能会提供更多详细信息。
    public IActionResult OnGetPartialProject()
            {
                return Partial("~/Pages/Portfolio/_CreateProject.cshtml");
            }
    
    $('#call_partial').click(function () {
        $('#partial').load("/Portfolio/CreatePortfolio?handler=PartialProject");
                });
    
    public IActionResult OnGetPartialProject()
    {
        return Partial("_CreateProject");
    }