سؤال

هل من الممكن استخدام محرك القوالب asp (مع فئة الكود الخلفي الجزئي، الديناميكي <% ...%> كتل وما شابه) لإنشاء غير HTML؟أريد الحصول على طريقة نظيفة وقابلة للصيانة لإنشاء التعليمات البرمجية ديناميكيًا.(على وجه التحديد، أريد إنشاء كود LaTeX مملوء بقيم من قاعدة بيانات.)

تعد قوالب LaTeX الخاصة بي حاليًا عبارة عن سلاسل موارد تحتوي على عناصر نائبة أقوم باستبدالها بقيم قاعدة البيانات.وسرعان ما أصبح هذا الحل صعب الصيانة والتنظيف.أرغب حقًا في استخدام الكتل الديناميكية من ترميز aspx، لكنني لست متأكدًا من أ) ما إذا كان aspx سيحقق ملاءمة عندما لا يكون الإخراج HTML، أو ب) كيفية تقديم النتيجة فعليًا إلى ملف tex. .

كود الإنشاء نفسه موجود في ملف C# .dll.نحن نستخدم .NET 3.5

هل هذا ممكن؟شكرا لك مقدما.

هل كانت مفيدة؟

المحلول

قالب T4 الذي يأتي مع Visual Studio 2008 أصلاً أو مع Visual Studio 2005 SDK، يمكنك إنشاء أي شيء تريده تقريبًا.

يمكنك الحصول على مزيد من المعلومات على الروابط التالية:

أنا متأكد من أن كل هذه الروابط هي بداية جيدة لمساعيك.

إذا كنت تريد إنشاء قوالب T4 خارج Visual Studio، فهناك مهمة MSBuild مخصصة لاستدعاء قالب T4 (وصلة)

فيما يلي عينة من التعليمات البرمجية "التنفيذ" لمهمة MSBuild. انقر هنا للحصول على التعليمات البرمجية المصدر:

public override bool Execute()
{
    bool success = false;

    //read in the template:
    string template = File.ReadAllText(this.TemplatePath);

    //replace tags with property and item group values:
    ProjectHelper helper = new ProjectHelper(this);
    template = helper.ResolveProjectItems(template);

    //copy the template to a temp file:
    this._tempFilePath = Path.GetTempFileName();
    File.WriteAllText(this._tempFilePath, template);

    //shell out to the exe:
    ProcessHelper.Run(this, TextTransform.ToolPath, TextTransform.ExeName, string.Format(TextTransform.ArgumentFormat, this.OutputPath, this._tempFilePath));
    success = true;

    return success;
}

نصائح أخرى

وأنا لا أرى لماذا لا. شخص ما كنت أعرف في وظيفة سابقة خلق مولد المجمع قاعدة بيانات باستخدام صفحات ASP.NET والسيطرة مكرر لإدراج خصائص. ثم بعد ذلك كتب من محتويات المستند إلى ملف المصدر.

إذا كنت قلقا حول ASP.NET سوف يلقي مناسبا، يمكنك فقط إنشاء حالة اختبار محدودة جدا وانظر لنفسك. يجب أن لا تأخذ الكثير من الوقت لاختبار نظرية وتتيح لك معرفة ما اذا كان يلبي احتياجاتك.

ومن الممكن بالتأكيد. ومعظم عناصر تحكم الملقم تكون بعيدة، كما أنها سوف ينبعث تلقائيا ترميز HTML. ولكن، يمكنك DataBind عناصر الصفحة واستخدام تعبيرات ربط البيانات. سوف البصرية ستوديو يشكو شك في العلامات غير صالحة.

وثم لديك لتشغيل صفحاتك من خلال كاسيني أو خط أنابيب ASP.NET للحصول على المخرجات. لقد حصلت على تسخير وحدة اختبار في مكان ما أن يفعل ذلك، وأنه من السهل بشكل مدهش.

A <م> أفضل فكرة، على الرغم من أن من المحتمل أن يكون لاستخدام مولد رمز. شيء من هذا القبيل CodeSmith يجب أن تعمل بشكل جيد، أو حتى استوديو البصرية التي بنيت في T4 يمنحك الكثير من المرونة في حين لا تحاول ربط لكم في HTML.

لتوليد رمز يجب أن نلقي نظرة على الميزات T4 النموذجيه. ويستخدم بناء الجملة مشابهة لASP.Net.

وانظر سكوت Hanselmans المشاركة: http://www.hanselman.com/blog/T4TextTemplateTransformationToolkitCodeGenerationBestKeptVisualStudioSecret.aspx

ونعم يمكنك ذلك. مجرد إنشاء صفحة. aspx القياسية، وحذف كل HTML ومكان مهما كان المحتوى الذي تريد في الصفحة. ثم يمكنك استخدام <٪٪> علامات لوضع المحتوى الديناميكي داخل الصفحة. وقال جيسون مثل Z، يمكنك استخدام جهاز التحكم مكرر إلى تكرار خلال مجموعة من البنود خارج قائمة في "الصفحة". أيضا، فلن تكون قادرا على استخدام كل عناصر تحكم الملقم أخرى لأنها تولد HTML، ولكن لا يزال بإمكانك إنشاء جهاز التحكم عن الخادم الخاصة و / أو عناصر تحكم المستخدم عند الضرورة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top