Bonjour Je dispose de fonctionnalités pour enregistrer le texte et l'image des formulaires dans Azure SQL db (texte) et Azure Blobs pour mes images. En outre, il est hébergé dans le cloud dans Azure et la sauvegarde et le téléchargement fonctionnent correctement. Courir sur la pile habituelle C# EF MVC5 Bootstrap Vanilla js et Azure Blobs Webrole etc.Blocs et modèles Azure MVC5
Je suis coincé sur une zone que je n'arrive pas à comprendre - affiche mon modèle de vue (c'est un viewmodel avec deux objets EF deux tables de base de données) avec la liste blob (objet blob Azure). En raison de leur technicité n'est pas le même type de contexte est le problème, mais comment pouvons-nous combiner les deux et la sortie comme suit:
Retour vue (jobsVModel + Blobs);
Voici mon travail actuel: Modèle:
namespace client.Models
{
public class JoinUsersandJobsModel : DbContext
{
public tradesusers tradesusers { get; set; }
public jobs jobs { get; set; }
public uploadedfiles uploadedfiles { get; set; }
//add a blob service to our model
//public BlobProfileImageServices _blobServices = new BlobProfileImageServices();
}
}
Le j'ai mon contrôleur:
private traderEntities db = new traderEntities();
BlobProfileImageServices _blobServices = new BlobProfileImageServices();
public ActionResult Index(string usernameCookie)
{
var viewModel = from u in db.tradesusers
join j in db.jobs on u.id equals j.jobbyuserid
join pic in db.uploadedfiles on j.id equals pic.ImageId
where u.email.Equals(usernameCookie)
select new JoinUsersandJobsModel { tradesusers = u, jobs = j, uploadedfiles = pic };
//blob container
List<ImageVM> images;
CloudBlobContainer blobContainer = _blobServices.GetCloudBlobContainer();
List<string> blobs = new List<string>();
foreach (var blobItem in blobContainer.ListBlobs())
{
blobs.Add(blobItem.Uri.ToString());
}
images = blobs
// convert an Azure blob record into an ImageVM:
.Select(b => new ImageVM()
{
})
.ToList();
//return View(blobs);
//return View(imageModel);
//List<Object> allS = (from x in viewModel select (Object)x).ToList();
//allS.AddRange((from x in blobs select (Object)x).ToList());
return View(images);
//return View(db.tradesusers.ToList());
}
Comme vous pouvez le voir ci-dessus, je veux revenir les deux objets, l'un qui est appelé 'blobs' et le second appelé 'viewModel' ensemble en même temps à ma vue, mais nous pouvons voir qu'ils sont deux types d'objets différents! 'Return View (viewModel.ToList())' fonctionne seul, tout comme 'Return View (blobs)'.
Mon Vue:
@model IEnumerable<traderclient.Models.JoinUsersandJobsModel>
<[email protected] List<traderclient.Models.ImageVM>-->
@{
ViewBag.Title = "Profile";
}
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width" />
<title>system - Client's Profile</title>
</head>
<body>
<br /><br /><br /><br /><br />
<h1>Profile</h1>
@foreach (var item in Model)
{
<div>
<h5> Profile pic</h5>
<hr />
<dl class="dl-horizontal">
<dt>
Pic
</dt>
<dt>
</dt>
<dd>
<img src="@Url.Content(@[email protected])" width="250" height="250" multiple />
</dd>
</dl>
<p>
@Html.ActionLink("Edit", "Edit", new { id = @item }) |
@Html.ActionLink("Back to List", "Index")
</p>
</div> }
<table>
<tr>
<td>
<table class="table" style="width:200px;">
<tr>
<td style="width:50%"> Image </td>
<td style="width:25%"> Delete </td>
</tr>
<ul style="list-style-type:none; padding:0;">
@foreach (var item in model2)
{
<tr>
<td> <img src="@item." alt="image here is" width="100" height="100" /> </td>
<td> <input type="button" id="@item." onclick="deleteImage('@item');" value="Delete" /></td>
</tr>
}
</ul>
</table>
</td>
<td style="width:100px"></td>
</tr>
</table>
Encore une fois ci-dessus dans la vue en utilisant une seule définition du modèle fonctionne de manière à savoir le IEnumerable pour les tables d'emplois ou tradesusers ou si je l'utilise seulement l'objet de la liste pour l'objet image Blob qui fonctionne aussi. Mais comme le contrôleur, je ne peux pas combiner les deux. Comme je l'ai déjà mentionné le reste des données (toutes les données à part le blob) résident tous dans la base de données SQL Azure. Seules les images vivent dans les Blobs Azure.
Ne pas oublier ma définition pour mon Blobs qui réside dans cette racine de projet aussi comme une classe distincte:
Merci Dai. Votre réponse combine-t-elle mon objet SQL et mon objet Blob? Je pense qu'il se concentre uniquement sur les images blobs mais pas sur mon objet SQL. Comme je l'ai mentionné, mes données textuelles résident dans la base de données SQL Azure qui est séparée de l'endroit où mes données d'image se trouvent dans les blobs Azure. Je veux combiner les deux dans un modèle ou un contrôleur, et les produire ensemble sur une vue. J'ai ajouté un échantillon de code pour vous aider. –
@jamawa Si vous posez cette question, cela signifie que vous n'avez pas lu ma réponse ou que vous ne la comprenez pas. – Dai
Doit être le dernier. Essayons encore une fois, donc ce que vous dites est d'avoir un contrôleur séparé avec son propre modèle et vue? Si c'est le cas, n'aurai-je pas deux vues séparées? Si c'est le cas, est-ce que cela répond à ma question d'avoir une View avec deux modèles composés d'une partie Azure Sql db et d'une partie Azure blob? S'il vous plaît élaborer en donnant un exemple complet des deux modèles mis en œuvre. –