Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/24.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# 使用视图、视图模型和控制器将图像上载到SQL server_C#_Sql Server_Model View Controller_Asp.net Mvc 5_Image Uploading - Fatal编程技术网

C# 使用视图、视图模型和控制器将图像上载到SQL server

C# 使用视图、视图模型和控制器将图像上载到SQL server,c#,sql-server,model-view-controller,asp.net-mvc-5,image-uploading,C#,Sql Server,Model View Controller,Asp.net Mvc 5,Image Uploading,我在VS2013,对ASP.NET MVC基本上是全新的。我已经尝试这样做了一段时间没有运气。让用户完成一个带有图像上传的表单,并将该表单中的图像写入数据库。我知道最好将路径写入数据库并将图像存储在应用程序的内容文件夹中,但我不知道如何执行这些操作。有人能给我一个起点吗 我还有一个ClientUtility.cs,用于填充下拉列表,但我认为现在不需要它 当前,数据库中映像引用的数据类型为VARCHAR255 控制器: 视图: 按以下代码编辑控制器。我假设staffPhoto正在拍摄picture

我在VS2013,对ASP.NET MVC基本上是全新的。我已经尝试这样做了一段时间没有运气。让用户完成一个带有图像上传的表单,并将该表单中的图像写入数据库。我知道最好将路径写入数据库并将图像存储在应用程序的内容文件夹中,但我不知道如何执行这些操作。有人能给我一个起点吗

我还有一个ClientUtility.cs,用于填充下拉列表,但我认为现在不需要它

当前,数据库中映像引用的数据类型为VARCHAR255

控制器:

视图:


按以下代码编辑控制器。我假设staffPhoto正在拍摄picturepath

public ActionResult SaveStaffDetails(RegisterStaffViewModel model,HttpPostedFileBase image)
{
    if (Request.Files.Count > 0) {
        string FileName = Guid.NewGuid().ToString().Replace("-", "");
        string Path = System.IO.Path.GetExtension(Request.Files[0].FileName);
        string FullPath = "~/Images/StaffPhotos/" + FileName + Path;
        Request.Files[0].SaveAs(Server.MapPath(FullPath));
        staffPhoto = FileName + Path;
    }
}
在您的视图中,您需要一个文件post输入

<input type="file" class="filestyle" name="image" data-classbutton="btn btn-primary" data-input="false">

我在var staff=new staffTable上面向控制器添加了您指示的内容。不需要花时间。staffPhoto在当前上下文中不存在。它不会保存,因为您的模型中没有包含photopath的任何变量。在数据库中包含公共字符串somethingPath{get;set;}必须有一个属于photopath的列。
@*Start of Registration Form for Staff*@

@using (Html.BeginForm("SaveStaffDetails", "Staff", FormMethod.Post, new { @class = "form-horizontal", role = "form" }))
{
            @Html.AntiForgeryToken()
            @Html.HiddenFor(m => m.UserId)
            <fieldset>

                <!-- Form Name -->
                <legend>Register New Staff</legend>

                @*First Name*@
                <div class="form-group">
                    <div class="col-md-6">
                        @Html.TextBoxFor(m => m.FirstName, new { @class = "form-control input-md", @placeholder = "First Name" })
                    </div>
                </div>

                @*Last Name*@
                <div class="form-group">
                    <div class="col-md-6">
                        @Html.TextBoxFor(m => m.LastName, new { @class = "form-control input-md", @placeholder = "Last Name" })
                    </div>
                </div>

                @*Person Title*@
                <div class="form-group">
                    <label class="col-md-6 control-label" for="title">Title</label>
                    <div class="col-md-6">
                        @Html.DropDownListFor(m => m.SelectedTitle, new SelectList(Model.Title, "Text", "Value"))
                    </div>
                </div>


                @*Address Line*@
                <div class="form-group">
                    <div class="col-md-6">
                        @Html.TextBoxFor(m => m.Address, new { @class = "form-control input-md", @placeholder = "Address" })
                    </div>
                </div>

                @*City*@
                <div class="form-group">
                    <div class="col-md-6">
                        @Html.TextBoxFor(m => m.City, new { @class = "form-control input-md", @placeholder = "City" })
                    </div>
                </div>

                @*State*@
                <div class="form-group">
                    <label class="col-md-6 control-label" for="state">State</label>
                    <div class="col-md-6">
                        @Html.DropDownListFor(m => m.SelectedState, new SelectList(Model.States, "Text", "Value"))
                    </div>
                </div>

                @*Zip Code*@
                <div class="form-group">
                    <div class="col-md-6">
                        @Html.TextBoxFor(m => m.ZipCode, new { @class = "form-control input-md", @placeholder = "Zip Code" })
                    </div>
                </div>

                @*Phone Number*@
                <div class="form-group">
                    <div class="col-md-6">
                        @Html.TextBoxFor(m => m.PhoneNumber, new { @class = "form-control input-md", @placeholder = "Phone Number" })
                    </div>
                </div>

                @*Email Address*@
                <div class="form-group">
                    <div class="col-md-6">
                        @Html.TextBoxFor(m => m.EmailAddress, new { @class = "form-control input-md", @placeholder = "Email Address" })
                    </div>
                </div>

                @*Experience*@
                <div class="form-group">
                    <label class="col-md-6 control-label" for="experience">Experience</label>
                    <div class="col-md-6">
                        @Html.DropDownListFor(m => m.SelectedExperience, new SelectList(Model.Experience, "Text", "Value"))
                    </div>
                </div>

                @*Education*@
                <div class="form-group">
                    <label class="col-md-6 control-label" for="education">Education</label>
                    <div class="col-md-6">
                        @Html.DropDownListFor(m => m.SelectedEducation, new SelectList(Model.Education, "Text", "Value"))
                    </div>
                </div>

                @*Desired Salary*@
                <div class="form-group">
                    <label class="col-md-6 control-label" for="salary">Desired Salary</label>
                    <div class="col-md-6">
                        @Html.DropDownListFor(m => m.SelectedSalary, new SelectList(Model.Salary, "Text", "Value"))
                    </div>
                </div>

                @*Profession*@
                <div class="form-group">
                    <label class="col-md-6 control-label" for="profession">Profession</label>
                    <div class="col-md-6">
                        @Html.DropDownListFor(m => m.SelectedProfession, new SelectList(Model.Profession, "Text", "Value"))
                    </div>
                </div>

                @*Availability*@
                <div class="form-group">
                    <label class="col-md-6 control-label" for="availability">Availability</label>
                    <div class="col-md-6">
                        @Html.DropDownListFor(m => m.SelectedAvailability, new SelectList(Model.Availability, "Text", "Value"))
                    </div>
                </div>

                <!-- INSERT IMAGE UPLOAD HERE -->
            </fieldset>

            <input type="submit" value="Save" />
}
public ActionResult SaveStaffDetails(RegisterStaffViewModel model,HttpPostedFileBase image)
{
    if (Request.Files.Count > 0) {
        string FileName = Guid.NewGuid().ToString().Replace("-", "");
        string Path = System.IO.Path.GetExtension(Request.Files[0].FileName);
        string FullPath = "~/Images/StaffPhotos/" + FileName + Path;
        Request.Files[0].SaveAs(Server.MapPath(FullPath));
        staffPhoto = FileName + Path;
    }
}
<input type="file" class="filestyle" name="image" data-classbutton="btn btn-primary" data-input="false">