Asp.net core Request.Form inside.cshtml有问题
尝试创建一个具有三个图像名称的下拉选择器的页面,当选择一个图像名称并单击“提交”时,该页面将在页面上显示该图像 我在这里找到了一个例子(似乎已经过时了): has:if(请求[“光选择”]!=null) 在某个地方读到更正是请求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
@{ 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>
<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>
<input type="submit" value="Submit" />
</div>
<div style="padding:10px;">
@if (Model.imagePath != "")
{
<img src="@Model.imagePath" alt="Sample Image" width="300" />
}
</div>
</form>