Asp.net 是否有方法使用int&;发送视图中的SelectList数据;字符串(在编辑函数中)?

Asp.net 是否有方法使用int&;发送视图中的SelectList数据;字符串(在编辑函数中)?,asp.net,asp.net-mvc,asp.net-core,.net-core,Asp.net,Asp.net Mvc,Asp.net Core,.net Core,我正在使用Asp.net core编写一个web应用程序,以前我曾尝试通过控制器中的默认编辑功能编辑一个项目,没有问题 最近,我将索引视图中列表中的一个奇数字段改为选择列表,而不是常规视图 之后,当我试图编辑原始数据时,它打开了编辑页面,然后当我单击“保存”按钮时,出现了一条错误消息(“InvalidCastException:无法将“System.Int32”类型的对象强制转换为“System.String”。”) 编辑视图中的保存按钮: ''' 获取编辑功能: ''' 公共异步任务编辑(

我正在使用Asp.net core编写一个web应用程序,以前我曾尝试通过控制器中的默认编辑功能编辑一个项目,没有问题

最近,我将索引视图中列表中的一个奇数字段改为选择列表,而不是常规视图

之后,当我试图编辑原始数据时,它打开了编辑页面,然后当我单击“保存”按钮时,出现了一条错误消息(“InvalidCastException:无法将“System.Int32”类型的对象强制转换为“System.String”。”)

编辑视图中的保存按钮:

'''


获取编辑功能:

'''

公共异步任务编辑(int?id)
{
列表状态列表=_context.Status.ToList();
ViewData[“StatusList”]=新的SelectList(StatusList,“STID”,“Name”);
if(id==null)
{
返回NotFound();
}
var bugsSummary=wait _context.bugsSummary.SingleOrDefaultAsync(m=>m.Id==Id);
如果(bugsSummary==null)
{
返回NotFound();
}
ViewData[“UserId”]=新的选择列表(_context.Users,“Id”,“Id”,bugsSummary.UserId);
ViewData[“ProjectsPId”]=新的选择列表(_context.Projects,“PId”,“PName”,bugsummary.ProjectsPId);
返回视图(bugsSummary);
}
'''

我在后期编辑功能中设置了一个断点,它不会进入后期编辑

我尝试将StatusList中的状态视图数据发送为(int,string),但SelectList类不允许

如何解决InvalidCastException错误

附加附件:

HTTP后期编辑功能。

'''

公共异步任务编辑(int-id,
[Bind(“Id、ProjectsPId、Bug、BugSummary、TesterName、ImageUrl、statusId”)]
bugsummary bugsummary,ifformfile myfile)
{
if(id!=bugsSummary.id)
{
返回NotFound();
}
if(ModelState.IsValid)
{
尝试
{
//bugsSummary.ImageUrl=“”;
bugsSummary.ImageUrl=等待用户文件.UploadeNewImageAsync(bugsSummary.ImageUrl,
myfile,_environment.WebRootPath,Properties.Resources.ImgFolder,100100);
bugsSummary.PublicationDate=DateTime.Today.Date;
bugsSummary.UserId=\u userManager.GetUserId(用户);
_更新(bugsSummary);
wait_context.SaveChangesAsync();
}
catch(DbUpdateConcurrencyException)
{
如果(!bugsummary存在(bugsummary.Id))
{
返回NotFound();
}
其他的
{
投掷;
}
}
返回重定向到操作(名称(索引));
}
ViewData[“UserId”]=新的选择列表(_context.Users,“Id”,“Id”,bugsSummary.UserId);
ViewData[“ProjectsPId”]=新的选择列表(_context.Projects,“PId”,“PName”,bugsummary.ProjectsPId);
返回视图(bugsSummary);
}
'''

表格:

'''


@foreach(Microsoft.AspNetCore.Mvc.Rendering.SelectListItem状态在ViewBag.StatusList中显示为Microsoft.AspNetCore.Mvc.Rendering.SelectList)
{
if(int.Parse(status.Value)=Model.StatusSTID)
{
status.Selected=true;
}
其他的
{
status.Selected=false;
}
}
@*  *@

''”

表单包含什么内容?操作结果将尝试将表单值绑定到与ActionResult中的参数相同的类型,以便任何人提供建议。我建议您除了发布内容外,还应该发布(a)表单代码和(b)编辑方法。好的,我已经编辑了帖子。等待你的回答。Thanksse:action result将表单值绑定到与action result中的参数相同的类型,我检查了所有的值,它们都是相同的,我不知道int参数是什么,它无法将其转换为字符串,我尝试删除所有参数,它显示了相同的错误,我发布了其他代码,谢谢大家。
            <div class="form-group">
            <input type="submit" value="Save" class="btn btn-default" />
            </div>

         
    public async Task<IActionResult> Edit(int? id)
    {

        List<Status>  StatusList = _context.Status.ToList();
        ViewData["StatusList"] = new SelectList(StatusList, "STID", "Name");

        if (id == null)
        {
            return NotFound();
        }

        var bugsSummary = await _context.BugsSummary.SingleOrDefaultAsync(m => m.Id == id);
        if (bugsSummary == null)
        {
            return NotFound();
        }
        ViewData["UserId"] = new SelectList(_context.Users, "Id", "Id", bugsSummary.UserId);
        ViewData["ProjectsPId"] = new SelectList(_context.Projects, "PId", "PName", bugsSummary.ProjectsPId);

        return View(bugsSummary);
    }
 public async Task<IActionResult> Edit(int id, 
 [Bind("Id,ProjectsPId,Bug,BugSummary,TesterName,ImageUrl,StatusSTID")] 
 BugsSummary bugsSummary, IFormFile myfile)
    {
        if (id != bugsSummary.Id)
        {
            return NotFound();
        }

        if (ModelState.IsValid)
        {
            try
            {


                //bugsSummary.ImageUrl = "";
                bugsSummary.ImageUrl = await UserFile.UploadeNewImageAsync(bugsSummary.ImageUrl,
          myfile, _environment.WebRootPath, Properties.Resources.ImgFolder, 100, 100);

                bugsSummary.PublicationDate = DateTime.Today.Date;
                bugsSummary.UserId = _userManager.GetUserId(User);


                _context.Update(bugsSummary);
                await _context.SaveChangesAsync();
            }
            catch (DbUpdateConcurrencyException)
            {
                if (!BugsSummaryExists(bugsSummary.Id))
                {
                    return NotFound();
                }
                else
                {
                    throw;
                }
            }
            return RedirectToAction(nameof(Index));
        }
        ViewData["UserId"] = new SelectList(_context.Users, "Id", "Id", bugsSummary.UserId);
        ViewData["ProjectsPId"] = new SelectList(_context.Projects, "PId", "PName", bugsSummary.ProjectsPId);

        return View(bugsSummary);
    }
<form asp-action="Edit" enctype="multipart/form-data">


        <div asp-validation-summary="ModelOnly" class="text-danger"></div>
        <input type="hidden" asp-for="Id" />


        <div class="form-group">

            <label asp-for="ProjectsPId" class="control-label"></label>
            <input asp-for="ProjectsPId" class="form-control" />
            <span asp-validation-for="ProjectsPId" class="text-danger"></span>

        </div>


        <input type="hidden" asp-for="UserId" />
        <div class="form-group">
            <label asp-for="Bug" class="control-label"></label>
            <input asp-for="Bug" class="form-control" />
            <span asp-validation-for="Bug" class="text-danger"></span>
        </div>
        <div class="form-group">
            <label asp-for="BugSummary" class="control-label"></label>
            <input asp-for="BugSummary" class="form-control" />
            <span asp-validation-for="BugSummary" class="text-danger"></span>
        </div>
        <div class="form-group">
            <label asp-for="TesterName" class="control-label"></label>
            <input asp-for="TesterName" class="form-control" />
            <span asp-validation-for="TesterName" class="text-danger"></span>
        </div>


        <div class="form-group">
            <label asp-for="ImageUrl" class="control-label"></label>
            <img src="@Url.Content("~/" + AkelTestingTool.Properties.Resources.ImgFolder + "/" + Model.ImageUrl)" width="150" height="90" />

            <input type="file" name="myfile" id="file" accept=".png,.jpg,.jpeg,.gif,.tif" class="btn btn-default" />
            <input asp-for="ImageUrl" class="form-control" />
            <span asp-validation-for="ImageUrl" class="text-danger"></span>
        </div>


        <label asp-for="Status.Name" class="control-label"></label>

        @foreach (Microsoft.AspNetCore.Mvc.Rendering.SelectListItem status in ViewBag.StatusList as Microsoft.AspNetCore.Mvc.Rendering.SelectList)
        {
            if (int.Parse(status.Value) == Model.StatusSTID)
            {
                status.Selected = true;
            }
            else
            {
                status.Selected = false;
            }
        }
        

        <div class="from-group">

            <select asp-for="Status.Name" asp-items="@(ViewBag.StatusList)"></select>

            @* <select asp-for="StatusSTID" asp-items="ViewBag.StatusList","Name" ></select> *@


            <span asp-validation-for="Status.Name" class="text-danger"></span>
        </div>


        <div class="form-group">


            <input type="submit" value="Save" class="btn btn-default" />

        </div>

    </form>