将Json对象和FormData(文件)发送到带有参数MVC的控制器
Posting Json Object and FormData( file) to controller with parameter MVC
我正在尝试创建注册页面。我希望用户在注册时上传图像。我在控制器上创建了一个带有两个参数的动作。一个是模型,另一个是HttpPostFileBase对象。但我不能同时传递这两个物体。我尝试了很多方法,但我不能找到它。谢谢。
单击register调用register()方法。
function Register() {
var team = { id: $("#team").val() }
var account =
{
eMailAddress: $("#eMailAddress").val(),
userName: $("#userName").val(),
password: $("#password").val(),
password2: $("#password2").val(),
firstName: $("#firstName").val(),
lastName: $("#lastName").val(),
gender: $("#gender").val(),
team: team,
birthday: $("#birthday").val(),
phoneAreaCode: $("#phoneAreaCode").val(),
phoneLocalNumber: $("#phoneLocalNumber").val()
}
var imageFile = $('#image').get(0).files[0];
var data = new FormData();
data.append("image", imageFile);
data.append('account', account);
console.log(typeof data);
$.ajax
({
url: "/Registration/Register",
type: "POST",
data: data,
contentType: false,
processData: false,
success: function (response) {
$("#message").hide();
$("#message").empty();
if (response.isSucceeded) {
window.location.replace("/Login/Login");
}
else {
$.each(response.errors, function (i, error) {
$("#message").append(error + "<br>");
});
$("#message").fadeIn();
}
}
});
}
还有Controller Action
[HttpPost]
public ActionResult Register( HttpPostedFileBase image,Account account )
{
account.team = serviceFactory.Run<GetTeamByIdResponse>(x => x.GetTeamById(new GetTeamByIdRequest(account.team.id))).team;
account.GenerateVerificationCode();
CreateAccountRequest request = new CreateAccountRequest();
request.account = account;
request.image = image;
request.server = Server;
CreateAccountResponse response = serviceFactory.Run<CreateAccountResponse>(x => x.CreateAccount(request));
if (response.isSucceeded)
{
//toDo
}
return Json(response);
}
<div class="kayit-ol-box">
<ul>
<li>
E-posta<br>
<input id="eMailAddress" type="text">
</li>
<li>
Kullanıcı Adı<br>
<input id="userName" type="text">
</li>
<li>
Şifre<br>
<input id="password" type="password">
</li>
<li>
Şifre Tekrar<br>
<input id="password2" type="password">
</li>
<li>
Ad<br>
<input id="firstName" type="text">
</li>
<li>
Soyad<br>
<input id="lastName" type="text">
</li>
<li>
Cinsiyet<br>
<select id="gender">
<option value="Erkek">
Erkek
</option>
<option value="Kadın">
Kadın
</option>
</select>
</li>
<li>
Doğum Tarihi<br>
<input id="birthday" type="date" value="" />
</li>
<li>
Cep Telefonu<br>
<input class="alankodu" type="number" id="phoneAreaCode" />
<input class="telefon" id="phoneLocalNumber" type="number" step="1" min="10">
</li>
<li>
Tuttuğunuz Takım<br>
<select id="team">
<option selected value="0">
Tutmuyorum
</option>
@if (Model != null)
{
foreach (Team team in Model)
{
<option value="@team.id">
@team.name
</option>
}
}
</select>
</li>
<li>
Avatar Ekle<br>
<span>Maximum 700 kb (jpg, png, gif)</span><br>
<input class="" id="image" name="image" type="file">
</li>
<li>
<input type="checkbox" id="izin" value="1" class="css-checkbox" checked="checked" />
<label for="checkbox21" id="izin" class="css-label">
Üyelik Sözleşmesi 'ni okudum ve kabul
ediyorum.
</label>
<br>
<br>
<button class="kayit-submit" type="button" id="submit" onclick="Register()">ÜYELİĞİ TAMAMLA</button>
</li>
我不能同时通过。其中一个总是null
几个月前我创建了一个小提琴来尝试这个。在这里找到小提琴:https://dotnetfiddle.net/qc4L8l
尝试在formData中以以下格式传递json对象:
data.append(account["id"], value_of_id);
相关文章:
- 获取@ResponseBody的一部分作为主干和Spring MVC控制器之间的参数
- MVC 3页面导航和使用javascript传递参数
- 使用jquery变量作为.net MVC中ActionLink的参数
- 从 javascript 获取 MVC 控制器中的操作参数时出错
- 带有javascript参数的ASPNET MVC RenderAction
- 如何进入Action并根据MVC中的按钮点击传递参数
- HTTP GET中的C#MVC ASP.NET URL参数未正确编码
- 是否可以将javascript json ajax POST的多个参数传递给Spring MVC控制器
- 如何在 mvc 4 中打开视图传递参数
- 当 JSON.stringify 时,ASP.NET MVC 控制器参数的 JSON 为 null
- 将字符串参数传递给 javascript 函数 mvc
- 为什么我以前的按钮不包含控制器的参数?分页列表 MVC
- C# asp.net MVC - 使用参数从 html.actionlink 调用脚本函数
- 将日期参数传递给 MVC 操作的 ajax 调用的安全方法
- 未捕获的语法错误:) 在 MVC 应用程序 JavaScript asp.net 参数列表后丢失
- ASP.NET MVC:GET参数未正确反序列化
- Javascript、MVC控制器缩放和返回参数
- 通过数组作为$ajax参数MVC
- 将Json对象和FormData(文件)发送到带有参数MVC的控制器
- 传递链接参数MVC和JQueryAjax