[ad_1]
皆さんこんにちは、
他の詳細とともに画像をアップロードしようとしていますが、このエラーが発生します:-
String[4]: the Size property has an invalid size of 0.
ストアド プロシージャは次のとおりです。
ALTER proc [dbo].[spInsertPageDetail] @Heading varchar(100), @Body varchar(2000), @Img varchar(100), @PageName varchar(50), @output char(1) output As Begin Transaction set @output='F' if(@PageName='WhyUsCreate') Begin set @output='T' Insert into TblWhyUs(Heading,Body,Img) values (@Heading,@Body,@Img) if(@@error<>0) Begin rollback transaction return 0 End End if(@PageName='ProductCreate') Begin set @output='T' Insert into TblProduct(Heading,Body,Img) values (@Heading,@Body,@Img) if(@@error<>0) Begin rollback transaction return 0 End End if(@PageName='SensorCreate') Begin set @output='T' Insert into TblSensor(Heading,Body,Img) values (@Heading,@Body,@Img) if(@@error<>0) Begin rollback transaction return 0 End End commit return 1
My Model Is:- namespace RsbEngMvc.Models { [Table("TblWhyUs")] public class WhyUs { public int ID { get; set; } [Required] public string Heading { get; set; } [Required] public string Body { get; set; } [Display (Name="Image")] public string Img { get; set; } } }
私が試したこと:
私のコントローラーは:-
public void Create(文字列の見出し、文字列の本文、文字列の画像、文字列のページ名)
{
文字列 ConnectionString = ConfigurationManager.ConnectionStrings[“RsbEnggContext”].接続文字列;
using (SqlConnection con = new SqlConnection(ConnectionString))
{
SqlCommand SqlCmdCreate = new SqlCommand(“spInsertPageDetail”, con);
SqlCmdCreate.CommandTimeout = 0;
SqlCmdCreate.CommandType = CommandType.StoredProcedure;
SqlParameter SqlParamHeading = new SqlParameter(“@Heading”, System.Data.SqlDbType.VarChar, 100);
SqlParameter SqlParamBody = new SqlParameter(“@Body”, System.Data.SqlDbType.VarChar, 2000);
SqlParameter SqlParamImg = new SqlParameter(“@Img”, System.Data.SqlDbType.VarChar, 100);
SqlParameter SqlParamPageName = new SqlParameter(“@PageName”, System.Data.SqlDbType.VarChar, 50);
SqlParameter SqlParamOutput = new SqlParameter(“@Output”, System.Data.SqlDbType.Char);
SqlParamOutput.Direction = ParameterDirection.Output;
SqlCmdCreate.Parameters.Add(SqlParamHeading);
SqlCmdCreate.Parameters.Add(SqlParamBody);
SqlCmdCreate.Parameters.Add(SqlParamImg);
SqlCmdCreate.Parameters.Add(SqlParamPageName);
SqlCmdCreate.Parameters.Add(SqlParamOutput);
SqlParamHeading.Value = Heading.Trim();
SqlParamBody.Value = Body.Trim();
SqlParamImg.Value = Img.Trim();
SqlParamPageName.Value = PageName.Trim();
con.Open();
int 結果 = SqlCmdCreate.ExecuteNonQuery();
if (SqlCmdCreate.Parameters[“@Output”].Value.ToString() == “F”)
{
Response.Write(“そのようなページはデータベースに存在しません。サポートに連絡してください!!”);
}
そうしないと
{
もし (結果 > 0)
{
RedirectToAction(“AdminWhyUs”);
}
そうしないと
{
RedirectToAction(“エラー”);
}
}
}
}
private bool IsValid(文字列ユーザー名、文字列パスワード)
{
bool IsValid = false;
使用 (var db = new RsbEngMvc.Models.RsbEnggContext())
{
var user = db.login.FirstOrDefault(u => u.AdminUserName == UserName);
if (ユーザー != null)
{
if (user.AdminPassword == パスワード)
{
IsValid = 真;
}
}
}
IsValid を返します。
}
[HttpGet]
public ActionResult AdminWhyUs()
{
文字列 ConnectionString = ConfigurationManager.ConnectionStrings[“RsbEnggContext”].接続文字列;
List
using (SqlConnection con = new SqlConnection(ConnectionString))
{
con.Open();
SqlCommand SqlCmdList = new SqlCommand(“TblWhyUs から ID、見出し、本文、画像を選択”, con);
SqlCmdList.CommandTimeout = 0;
SqlDataReader SqlDrList = SqlCmdList.ExecuteReader();
while (SqlDrList.Read())
{
WhyUs Whyusobj = new WhyUs();
whyusobj.ID = Convert.ToInt32(SqlDrList[“ID”]);
whyusobj.Heading = SqlDrList[“Heading”].ToString();
whyusobj.Body = SqlDrList[“Body”].ToString();
whyusobj.Img = SqlDrList[“Img”].ToString();
Whyuss.Add(whyusobj);
}
ビューを返します(理由);
}
}
[HttpGet]
[ActionName(“AdminWhyUsCreate”)]
public ActionResult AdminWhyUsCreate_Get()
{
ビューを返します();
}
[HttpPost]
[ActionName(“AdminWhyUsCreate”)]
public ActionResult AdminWhyUsCreate_Post(FormCollection formCollection,HttpPostedFileBase ファイル)
{
if (ModelState.IsValid)
{
WhyUs whyuss = new WhyUs();
if (ファイル != null)
{
file.SaveAs(HttpContext.Server.MapPath(“~/Images/”) + file.FileName);
//Whyuss.Img = file.FileName;
}
//RsbEnggContext DbContext = new RsbEnggContext();
//DbContext.whyus.Add(whyuss);
//DbContext.SaveChanges();
文字列見出し = formCollection[“Heading”];
文字列本体 = formCollection[“Body”];
string Img = Convert.ToString(file.FileName);
string PageName = “WhyUsCreate”;
Create(Heading, Body,Img, PageName);
return RedirectToAction(“AdminWhyUs”);
}
ビューを返します();
}
}
私の見解は:-
WhyUs ページの作成
@*@using (Html.BeginForm())*@
@using (Html.BeginForm(“AdminWhyUsCreate”, “MyAdmin”, FormMethod.Post, new { enctype = “multipart/form-data” }))
{
@Html.AntiForgeryToken()
@Html.ValidationSummary(真)
WhyUs に新しいエントリを作成する
@Html.LabelFor(モデル => モデル.見出し)
@Html.TextBoxFor(model => model.Heading, new { @class = “form-control” })
@Html.ValidationMessageFor(モデル => モデル.見出し)
@Html.LabelFor(モデル => モデル.ボディ)
@Html.TextAreaFor(model => model.Body, new { @class = “form-control”, @rows = 5 })
@Html.ValidationMessageFor(モデル => モデル.ボディ)
@Html.LabelFor(モデル => モデル.Img)
@*@Html.EditorFor(モデル => モデル.Img)*@
@*@using (Html.BeginForm(“Upload”, “Upload”, FormMethod.Post, new { cssclass = “btn btn-info”, enctype = “multipart/form-data” })))*@
{
@Html.ValidationMessageFor(モデル => モデル.Img)
}
}
@Html.ActionLink(“リストに戻る”, “AdminWhyUs”)
作成ボタンをクリックするたびに、エラーが発生します:-
弦[4]: Size プロパティのサイズが無効な 0 です。
解決策 1
最後に私は解決策を見つけました:-
コントローラー:-
public ActionResult AdminProductCreate_Post(Product products, HttpPostedFileBase file) { if (ModelState.IsValid) { if (file != null) { file.SaveAs(HttpContext.Server.MapPath("~/Images/") + file.FileName); products.Img = file.FileName; } RsbEnggContext DbContext = new RsbEnggContext(); DbContext.product.Add(products); DbContext.SaveChanges(); return RedirectToAction("AdminProduct"); } return View(); }
そして見る: –
<div class="container"> <h2 style="color:yellowgreen"><b>Create for Product Page</b></h2> @using (Html.BeginForm("AdminProductCreate", "MyAdmin", FormMethod.Post, new { enctype = "multipart/form-data" })) { @Html.AntiForgeryToken() @Html.ValidationSummary(true) <fieldset> <legend>Create New Entry in Products</legend> <div class="editor-label"> @Html.LabelFor(model => model.Heading) </div> <div class="editor-field"> @Html.TextBoxFor(model => model.Heading, new { @class = "form-control", maxlength = "100" }) @Html.ValidationMessageFor(model => model.Heading, "", new { @class = "label label-danger" }) </div> <div class="editor-label"> @Html.LabelFor(model => model.Body) </div> <div class="editor-field"> @Html.EditorFor(model => model.Body, new { @class = "form-control", @rows = 5, maxlength = "3000" }) @Html.ValidationMessageFor(model => model.Body, "", new { @class = "label label-danger" }) </div> <div class="editor-label"> @Html.LabelFor(model => model.Img) </div> <div class="editor-field"> <input type="file" id="FileUpload" name="file" /> </div> <p> <input type="submit" value="Create" class="btn btn-dark" /> </p> </fieldset> } <div> @Html.ActionLink("Back to List", "AdminProduct") </div>
解決策 2
fdfgghgb
qwertyuioplkjjhgfdsazxcvbnm
[ad_2]
コメント