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
Asp.net core Request.Form inside.cshtml有问题_Asp.net Core_Razor Pages - Fatal编程技术网

Asp.net core Request.Form inside.cshtml有问题

Asp.net core Request.Form inside.cshtml有问题,asp.net-core,razor-pages,Asp.net Core,Razor Pages,尝试创建一个具有三个图像名称的下拉选择器的页面,当选择一个图像名称并单击“提交”时,该页面将在页面上显示该图像 我在这里找到了一个例子(似乎已经过时了): has:if(请求[“光选择”]!=null) 在某个地方读到更正是请求 @{ var imagePath = ""; if (Request.Form["photoChoice"] != null) { imagePath = @"images\" + Request.Form["photoC

尝试创建一个具有三个图像名称的下拉选择器的页面,当选择一个图像名称并单击“提交”时,该页面将在页面上显示该图像

我在这里找到了一个例子(似乎已经过时了):

has:if(请求[“光选择”]!=null)

在某个地方读到更正是请求

@{ var imagePath = "";
    if (Request.Form["photoChoice"] != null)
        {
            imagePath = @"images\" + Request.Form["photoChoice"];
        }
}


<form method="post" action="">
    <div>
        I want to see:
        <select name="photoChoice">
            <option value="Photo1.jpg">Photo 1</option>
            <option value="Photo2.jpg">Photo 2</option>
            <option value="Photo3.jpg">Photo 3</option>
        </select>
        &nbsp;
        <input type="submit" value="Submit" />
    </div>
    <div style="padding:10px;">
        @if (imagePath != "")
        {
            <img src="@imagePath" alt="Sample Image" width="300" />
        }
    </div>
</form>
现在,当我试图编译网站时,我遇到了另一个错误“InvalidOperationException:不正确的内容类型”。它确实引用了If代码行

您提到的链接在asp.net中使用,而不是在core中使用

错误的主要原因是您将request.Form放入 错误的地方。您当前的需求应该将代码 进入代码隐藏中的
OnPost
方法

在内核中实现此功能的方法有很多,但需要在代码隐藏中的
post
方法中触发这些方法

请参阅

最简单的方法是在代码隐藏中绑定字段。详情请参阅下文

Page.cs:

public class ShowImagesModel : PageModel
    {
        [BindProperty]
        public string imagePath { get; set; }
        [BindProperty]
        public string photoChoice { get; set; }
        public void OnGet()
        {
            imagePath = "";

        }
        public void OnPost()
        {
            if (!string.IsNullOrEmpty(photoChoice))
            {
                imagePath = @"images\" + photoChoice;
            }
        }

    }
视图:

@page
@模型WebApplication1\u razor\u page.ShowImagesModel
@{
ViewData[“Title”]=“ShowImages”;
Layout=“~/Pages/Shared/_Layout.cshtml”;
} 
展示图像
我想看:
照片1
照片2
照片3
@如果(Model.imagePath!=“”)
{
}
结果如下:

public class ShowImagesModel : PageModel
    {
        [BindProperty]
        public string imagePath { get; set; }
        [BindProperty]
        public string photoChoice { get; set; }
        public void OnGet()
        {
            imagePath = "";

        }
        public void OnPost()
        {
            if (!string.IsNullOrEmpty(photoChoice))
            {
                imagePath = @"images\" + photoChoice;
            }
        }

    }
@page
@model WebApplication1_razor_page.ShowImagesModel
@{
    ViewData["Title"] = "ShowImages";
    Layout = "~/Pages/Shared/_Layout.cshtml"; 
} 
<h1>ShowImages</h1>

<form method="post" action="">
    <div>
        I want to see:
        <select asp-for="photoChoice" >
            <option value="Photo1.jpg">Photo 1</option>
            <option value="Photo2.jpg">Photo 2</option>
            <option value="Photo3.jpg">Photo 3</option>
        </select>
        &nbsp;
        <input type="submit" value="Submit" />
    </div>
    <div style="padding:10px;">
        @if (Model.imagePath != "")
        {
            <img src="@Model.imagePath" alt="Sample Image" width="300" />
        }
    </div>
</form>